gitlab.com/CoiaPrant/sqlite3@v1.19.1/internal/testfixture/testfixture_linux_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/include/tcl8.6 -export-defines "" -export-fields F -ignore-unsupported-alignment -trace-translation-units -volatile=sqlite3_io_error_pending,sqlite3_open_file_count,sqlite3_pager_readdb_count,sqlite3_pager_writedb_count,sqlite3_pager_writej_count,sqlite3_search_count,sqlite3_sort_count,saved_cnt -lgitlab.com/CoiaPrant/sqlite3/libtest -lmodernc.org/tcl/lib -lmodernc.org/z/lib -o internal/testfixture/testfixture_linux_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  	BUFSIZ                                = 8192
    28  	EOF                                   = -1
    29  	EXPERT_CONFIG_SAMPLE                  = 1
    30  	EXPERT_REPORT_CANDIDATES              = 4
    31  	EXPERT_REPORT_INDEXES                 = 2
    32  	EXPERT_REPORT_PLAN                    = 3
    33  	EXPERT_REPORT_SQL                     = 1
    34  	FILENAME_MAX                          = 4096
    35  	FOPEN_MAX                             = 16
    36  	FTS5_TOKENIZE_AUX                     = 0x0008
    37  	FTS5_TOKENIZE_DOCUMENT                = 0x0004
    38  	FTS5_TOKENIZE_PREFIX                  = 0x0002
    39  	FTS5_TOKENIZE_QUERY                   = 0x0001
    40  	FTS5_TOKEN_COLOCATED                  = 0x0001
    41  	FULLY_WITHIN                          = 2
    42  	HAVE_USLEEP                           = 1
    43  	IDX_HASH_SIZE                         = 1023
    44  	L_ctermid                             = 9
    45  	L_tmpnam                              = 20
    46  	NDEBUG                                = 1
    47  	NOT_WITHIN                            = 0
    48  	PARTLY_WITHIN                         = 1
    49  	P_tmpdir                              = "/tmp"
    50  	SEEK_CUR                              = 1
    51  	SEEK_END                              = 2
    52  	SEEK_SET                              = 0
    53  	SQLITE3_H                             = 0
    54  	SQLITE3_TEXT                          = 3
    55  	SQLITEEXPERT_H                        = 1
    56  	SQLITE_ABORT                          = 4
    57  	SQLITE_ABORT_ROLLBACK                 = 516
    58  	SQLITE_ACCESS_EXISTS                  = 0
    59  	SQLITE_ACCESS_READ                    = 2
    60  	SQLITE_ACCESS_READWRITE               = 1
    61  	SQLITE_ALTER_TABLE                    = 26
    62  	SQLITE_ANALYZE                        = 28
    63  	SQLITE_ANY                            = 5
    64  	SQLITE_API                            = 0
    65  	SQLITE_APICALL                        = 0
    66  	SQLITE_ATTACH                         = 24
    67  	SQLITE_AUTH                           = 23
    68  	SQLITE_AUTH_USER                      = 279
    69  	SQLITE_BLOB                           = 4
    70  	SQLITE_BUSY                           = 5
    71  	SQLITE_BUSY_RECOVERY                  = 261
    72  	SQLITE_BUSY_SNAPSHOT                  = 517
    73  	SQLITE_BUSY_TIMEOUT                   = 773
    74  	SQLITE_CALLBACK                       = 0
    75  	SQLITE_CANTOPEN                       = 14
    76  	SQLITE_CANTOPEN_CONVPATH              = 1038
    77  	SQLITE_CANTOPEN_DIRTYWAL              = 1294
    78  	SQLITE_CANTOPEN_FULLPATH              = 782
    79  	SQLITE_CANTOPEN_ISDIR                 = 526
    80  	SQLITE_CANTOPEN_NOTEMPDIR             = 270
    81  	SQLITE_CANTOPEN_SYMLINK               = 1550
    82  	SQLITE_CDECL                          = 0
    83  	SQLITE_CHANGESETAPPLY_INVERT          = 0x0002
    84  	SQLITE_CHANGESETAPPLY_NOSAVEPOINT     = 0x0001
    85  	SQLITE_CHANGESETSTART_INVERT          = 0x0002
    86  	SQLITE_CHANGESET_ABORT                = 2
    87  	SQLITE_CHANGESET_CONFLICT             = 3
    88  	SQLITE_CHANGESET_CONSTRAINT           = 4
    89  	SQLITE_CHANGESET_DATA                 = 1
    90  	SQLITE_CHANGESET_FOREIGN_KEY          = 5
    91  	SQLITE_CHANGESET_NOTFOUND             = 2
    92  	SQLITE_CHANGESET_OMIT                 = 0
    93  	SQLITE_CHANGESET_REPLACE              = 1
    94  	SQLITE_CHECKPOINT_FULL                = 1
    95  	SQLITE_CHECKPOINT_PASSIVE             = 0
    96  	SQLITE_CHECKPOINT_RESTART             = 2
    97  	SQLITE_CHECKPOINT_TRUNCATE            = 3
    98  	SQLITE_CKSUMVFS_STATIC                = 1
    99  	SQLITE_CONFIG_COVERING_INDEX_SCAN     = 20
   100  	SQLITE_CONFIG_GETMALLOC               = 5
   101  	SQLITE_CONFIG_GETMUTEX                = 11
   102  	SQLITE_CONFIG_GETPCACHE               = 15
   103  	SQLITE_CONFIG_GETPCACHE2              = 19
   104  	SQLITE_CONFIG_HEAP                    = 8
   105  	SQLITE_CONFIG_LOG                     = 16
   106  	SQLITE_CONFIG_LOOKASIDE               = 13
   107  	SQLITE_CONFIG_MALLOC                  = 4
   108  	SQLITE_CONFIG_MEMDB_MAXSIZE           = 29
   109  	SQLITE_CONFIG_MEMSTATUS               = 9
   110  	SQLITE_CONFIG_MMAP_SIZE               = 22
   111  	SQLITE_CONFIG_MULTITHREAD             = 2
   112  	SQLITE_CONFIG_MUTEX                   = 10
   113  	SQLITE_CONFIG_PAGECACHE               = 7
   114  	SQLITE_CONFIG_PCACHE                  = 14
   115  	SQLITE_CONFIG_PCACHE2                 = 18
   116  	SQLITE_CONFIG_PCACHE_HDRSZ            = 24
   117  	SQLITE_CONFIG_PMASZ                   = 25
   118  	SQLITE_CONFIG_SCRATCH                 = 6
   119  	SQLITE_CONFIG_SERIALIZED              = 3
   120  	SQLITE_CONFIG_SINGLETHREAD            = 1
   121  	SQLITE_CONFIG_SMALL_MALLOC            = 27
   122  	SQLITE_CONFIG_SORTERREF_SIZE          = 28
   123  	SQLITE_CONFIG_SQLLOG                  = 21
   124  	SQLITE_CONFIG_STMTJRNL_SPILL          = 26
   125  	SQLITE_CONFIG_URI                     = 17
   126  	SQLITE_CONFIG_WIN32_HEAPSIZE          = 23
   127  	SQLITE_CONSTRAINT                     = 19
   128  	SQLITE_CONSTRAINT_CHECK               = 275
   129  	SQLITE_CONSTRAINT_COMMITHOOK          = 531
   130  	SQLITE_CONSTRAINT_DATATYPE            = 3091
   131  	SQLITE_CONSTRAINT_FOREIGNKEY          = 787
   132  	SQLITE_CONSTRAINT_FUNCTION            = 1043
   133  	SQLITE_CONSTRAINT_NOTNULL             = 1299
   134  	SQLITE_CONSTRAINT_PINNED              = 2835
   135  	SQLITE_CONSTRAINT_PRIMARYKEY          = 1555
   136  	SQLITE_CONSTRAINT_ROWID               = 2579
   137  	SQLITE_CONSTRAINT_TRIGGER             = 1811
   138  	SQLITE_CONSTRAINT_UNIQUE              = 2067
   139  	SQLITE_CONSTRAINT_VTAB                = 2323
   140  	SQLITE_COPY                           = 0
   141  	SQLITE_CORE                           = 1
   142  	SQLITE_CORRUPT                        = 11
   143  	SQLITE_CORRUPT_INDEX                  = 779
   144  	SQLITE_CORRUPT_SEQUENCE               = 523
   145  	SQLITE_CORRUPT_VTAB                   = 267
   146  	SQLITE_CREATE_INDEX                   = 1
   147  	SQLITE_CREATE_TABLE                   = 2
   148  	SQLITE_CREATE_TEMP_INDEX              = 3
   149  	SQLITE_CREATE_TEMP_TABLE              = 4
   150  	SQLITE_CREATE_TEMP_TRIGGER            = 5
   151  	SQLITE_CREATE_TEMP_VIEW               = 6
   152  	SQLITE_CREATE_TRIGGER                 = 7
   153  	SQLITE_CREATE_VIEW                    = 8
   154  	SQLITE_CREATE_VTABLE                  = 29
   155  	SQLITE_DBCONFIG_DEFENSIVE             = 1010
   156  	SQLITE_DBCONFIG_DQS_DDL               = 1014
   157  	SQLITE_DBCONFIG_DQS_DML               = 1013
   158  	SQLITE_DBCONFIG_ENABLE_FKEY           = 1002
   159  	SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004
   160  	SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005
   161  	SQLITE_DBCONFIG_ENABLE_QPSG           = 1007
   162  	SQLITE_DBCONFIG_ENABLE_TRIGGER        = 1003
   163  	SQLITE_DBCONFIG_ENABLE_VIEW           = 1015
   164  	SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    = 1012
   165  	SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    = 1016
   166  	SQLITE_DBCONFIG_LOOKASIDE             = 1001
   167  	SQLITE_DBCONFIG_MAINDBNAME            = 1000
   168  	SQLITE_DBCONFIG_MAX                   = 1017
   169  	SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      = 1006
   170  	SQLITE_DBCONFIG_RESET_DATABASE        = 1009
   171  	SQLITE_DBCONFIG_TRIGGER_EQP           = 1008
   172  	SQLITE_DBCONFIG_TRUSTED_SCHEMA        = 1017
   173  	SQLITE_DBCONFIG_WRITABLE_SCHEMA       = 1011
   174  	SQLITE_DBSTATUS_CACHE_HIT             = 7
   175  	SQLITE_DBSTATUS_CACHE_MISS            = 8
   176  	SQLITE_DBSTATUS_CACHE_SPILL           = 12
   177  	SQLITE_DBSTATUS_CACHE_USED            = 1
   178  	SQLITE_DBSTATUS_CACHE_USED_SHARED     = 11
   179  	SQLITE_DBSTATUS_CACHE_WRITE           = 9
   180  	SQLITE_DBSTATUS_DEFERRED_FKS          = 10
   181  	SQLITE_DBSTATUS_LOOKASIDE_HIT         = 4
   182  	SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   = 6
   183  	SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   = 5
   184  	SQLITE_DBSTATUS_LOOKASIDE_USED        = 0
   185  	SQLITE_DBSTATUS_MAX                   = 12
   186  	SQLITE_DBSTATUS_SCHEMA_USED           = 2
   187  	SQLITE_DBSTATUS_STMT_USED             = 3
   188  	SQLITE_DEFAULT_MEMSTATUS              = 0
   189  	SQLITE_DEFAULT_PAGE_SIZE              = 1024
   190  	SQLITE_DELETE                         = 9
   191  	SQLITE_DENY                           = 1
   192  	SQLITE_DEPRECATED                     = 0
   193  	SQLITE_DESERIALIZE_FREEONCLOSE        = 1
   194  	SQLITE_DESERIALIZE_READONLY           = 4
   195  	SQLITE_DESERIALIZE_RESIZEABLE         = 2
   196  	SQLITE_DETACH                         = 25
   197  	SQLITE_DETERMINISTIC                  = 0x000000800
   198  	SQLITE_DIRECTONLY                     = 0x000080000
   199  	SQLITE_DONE                           = 101
   200  	SQLITE_DROP_INDEX                     = 10
   201  	SQLITE_DROP_TABLE                     = 11
   202  	SQLITE_DROP_TEMP_INDEX                = 12
   203  	SQLITE_DROP_TEMP_TABLE                = 13
   204  	SQLITE_DROP_TEMP_TRIGGER              = 14
   205  	SQLITE_DROP_TEMP_VIEW                 = 15
   206  	SQLITE_DROP_TRIGGER                   = 16
   207  	SQLITE_DROP_VIEW                      = 17
   208  	SQLITE_DROP_VTABLE                    = 30
   209  	SQLITE_EMPTY                          = 16
   210  	SQLITE_ENABLE_BYTECODE_VTAB           = 1
   211  	SQLITE_ENABLE_COLUMN_METADATA         = 1
   212  	SQLITE_ENABLE_DBPAGE_VTAB             = 1
   213  	SQLITE_ENABLE_DBSTAT_VTAB             = 1
   214  	SQLITE_ENABLE_DESERIALIZE             = 1
   215  	SQLITE_ENABLE_EXPLAIN_COMMENTS        = 1
   216  	SQLITE_ENABLE_FTS5                    = 1
   217  	SQLITE_ENABLE_GEOPOLY                 = 1
   218  	SQLITE_ENABLE_MATH_FUNCTIONS          = 1
   219  	SQLITE_ENABLE_MEMORY_MANAGEMENT       = 1
   220  	SQLITE_ENABLE_OFFSET_SQL_FUNC         = 1
   221  	SQLITE_ENABLE_PREUPDATE_HOOK          = 1
   222  	SQLITE_ENABLE_RBU                     = 1
   223  	SQLITE_ENABLE_RTREE                   = 1
   224  	SQLITE_ENABLE_SESSION                 = 1
   225  	SQLITE_ENABLE_SNAPSHOT                = 1
   226  	SQLITE_ENABLE_STAT4                   = 1
   227  	SQLITE_ENABLE_STMTVTAB                = 1
   228  	SQLITE_ENABLE_UNLOCK_NOTIFY           = 1
   229  	SQLITE_ERROR                          = 1
   230  	SQLITE_ERROR_MISSING_COLLSEQ          = 257
   231  	SQLITE_ERROR_RETRY                    = 513
   232  	SQLITE_ERROR_SNAPSHOT                 = 769
   233  	SQLITE_EXPERIMENTAL                   = 0
   234  	SQLITE_FAIL                           = 3
   235  	SQLITE_FCNTL_BEGIN_ATOMIC_WRITE       = 31
   236  	SQLITE_FCNTL_BUSYHANDLER              = 15
   237  	SQLITE_FCNTL_CHUNK_SIZE               = 6
   238  	SQLITE_FCNTL_CKPT_DONE                = 37
   239  	SQLITE_FCNTL_CKPT_START               = 39
   240  	SQLITE_FCNTL_CKSM_FILE                = 41
   241  	SQLITE_FCNTL_COMMIT_ATOMIC_WRITE      = 32
   242  	SQLITE_FCNTL_COMMIT_PHASETWO          = 22
   243  	SQLITE_FCNTL_DATA_VERSION             = 35
   244  	SQLITE_FCNTL_EXTERNAL_READER          = 40
   245  	SQLITE_FCNTL_FILE_POINTER             = 7
   246  	SQLITE_FCNTL_GET_LOCKPROXYFILE        = 2
   247  	SQLITE_FCNTL_HAS_MOVED                = 20
   248  	SQLITE_FCNTL_JOURNAL_POINTER          = 28
   249  	SQLITE_FCNTL_LAST_ERRNO               = 4
   250  	SQLITE_FCNTL_LOCKSTATE                = 1
   251  	SQLITE_FCNTL_LOCK_TIMEOUT             = 34
   252  	SQLITE_FCNTL_MMAP_SIZE                = 18
   253  	SQLITE_FCNTL_OVERWRITE                = 11
   254  	SQLITE_FCNTL_PDB                      = 30
   255  	SQLITE_FCNTL_PERSIST_WAL              = 10
   256  	SQLITE_FCNTL_POWERSAFE_OVERWRITE      = 13
   257  	SQLITE_FCNTL_PRAGMA                   = 14
   258  	SQLITE_FCNTL_RBU                      = 26
   259  	SQLITE_FCNTL_RESERVE_BYTES            = 38
   260  	SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE    = 33
   261  	SQLITE_FCNTL_SET_LOCKPROXYFILE        = 3
   262  	SQLITE_FCNTL_SIZE_HINT                = 5
   263  	SQLITE_FCNTL_SIZE_LIMIT               = 36
   264  	SQLITE_FCNTL_SYNC                     = 21
   265  	SQLITE_FCNTL_SYNC_OMITTED             = 8
   266  	SQLITE_FCNTL_TEMPFILENAME             = 16
   267  	SQLITE_FCNTL_TRACE                    = 19
   268  	SQLITE_FCNTL_VFSNAME                  = 12
   269  	SQLITE_FCNTL_VFS_POINTER              = 27
   270  	SQLITE_FCNTL_WAL_BLOCK                = 24
   271  	SQLITE_FCNTL_WIN32_AV_RETRY           = 9
   272  	SQLITE_FCNTL_WIN32_GET_HANDLE         = 29
   273  	SQLITE_FCNTL_WIN32_SET_HANDLE         = 23
   274  	SQLITE_FCNTL_ZIPVFS                   = 25
   275  	SQLITE_FLOAT                          = 2
   276  	SQLITE_FORMAT                         = 24
   277  	SQLITE_FULL                           = 13
   278  	SQLITE_FUNCTION                       = 31
   279  	SQLITE_GET_LOCKPROXYFILE              = 2
   280  	SQLITE_IGNORE                         = 2
   281  	SQLITE_INDEX_CONSTRAINT_EQ            = 2
   282  	SQLITE_INDEX_CONSTRAINT_FUNCTION      = 150
   283  	SQLITE_INDEX_CONSTRAINT_GE            = 32
   284  	SQLITE_INDEX_CONSTRAINT_GLOB          = 66
   285  	SQLITE_INDEX_CONSTRAINT_GT            = 4
   286  	SQLITE_INDEX_CONSTRAINT_IS            = 72
   287  	SQLITE_INDEX_CONSTRAINT_ISNOT         = 69
   288  	SQLITE_INDEX_CONSTRAINT_ISNOTNULL     = 70
   289  	SQLITE_INDEX_CONSTRAINT_ISNULL        = 71
   290  	SQLITE_INDEX_CONSTRAINT_LE            = 8
   291  	SQLITE_INDEX_CONSTRAINT_LIKE          = 65
   292  	SQLITE_INDEX_CONSTRAINT_LIMIT         = 73
   293  	SQLITE_INDEX_CONSTRAINT_LT            = 16
   294  	SQLITE_INDEX_CONSTRAINT_MATCH         = 64
   295  	SQLITE_INDEX_CONSTRAINT_NE            = 68
   296  	SQLITE_INDEX_CONSTRAINT_OFFSET        = 74
   297  	SQLITE_INDEX_CONSTRAINT_REGEXP        = 67
   298  	SQLITE_INDEX_SCAN_UNIQUE              = 1
   299  	SQLITE_INNOCUOUS                      = 0x000200000
   300  	SQLITE_INSERT                         = 18
   301  	SQLITE_INTEGER                        = 1
   302  	SQLITE_INTERNAL                       = 2
   303  	SQLITE_INTERRUPT                      = 9
   304  	SQLITE_IOCAP_ATOMIC                   = 0x00000001
   305  	SQLITE_IOCAP_ATOMIC16K                = 0x00000040
   306  	SQLITE_IOCAP_ATOMIC1K                 = 0x00000004
   307  	SQLITE_IOCAP_ATOMIC2K                 = 0x00000008
   308  	SQLITE_IOCAP_ATOMIC32K                = 0x00000080
   309  	SQLITE_IOCAP_ATOMIC4K                 = 0x00000010
   310  	SQLITE_IOCAP_ATOMIC512                = 0x00000002
   311  	SQLITE_IOCAP_ATOMIC64K                = 0x00000100
   312  	SQLITE_IOCAP_ATOMIC8K                 = 0x00000020
   313  	SQLITE_IOCAP_BATCH_ATOMIC             = 0x00004000
   314  	SQLITE_IOCAP_IMMUTABLE                = 0x00002000
   315  	SQLITE_IOCAP_POWERSAFE_OVERWRITE      = 0x00001000
   316  	SQLITE_IOCAP_SAFE_APPEND              = 0x00000200
   317  	SQLITE_IOCAP_SEQUENTIAL               = 0x00000400
   318  	SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN    = 0x00000800
   319  	SQLITE_IOERR                          = 10
   320  	SQLITE_IOERR_ACCESS                   = 3338
   321  	SQLITE_IOERR_AUTH                     = 7178
   322  	SQLITE_IOERR_BEGIN_ATOMIC             = 7434
   323  	SQLITE_IOERR_BLOCKED                  = 2826
   324  	SQLITE_IOERR_CHECKRESERVEDLOCK        = 3594
   325  	SQLITE_IOERR_CLOSE                    = 4106
   326  	SQLITE_IOERR_COMMIT_ATOMIC            = 7690
   327  	SQLITE_IOERR_CONVPATH                 = 6666
   328  	SQLITE_IOERR_CORRUPTFS                = 8458
   329  	SQLITE_IOERR_DATA                     = 8202
   330  	SQLITE_IOERR_DELETE                   = 2570
   331  	SQLITE_IOERR_DELETE_NOENT             = 5898
   332  	SQLITE_IOERR_DIR_CLOSE                = 4362
   333  	SQLITE_IOERR_DIR_FSYNC                = 1290
   334  	SQLITE_IOERR_FSTAT                    = 1802
   335  	SQLITE_IOERR_FSYNC                    = 1034
   336  	SQLITE_IOERR_GETTEMPPATH              = 6410
   337  	SQLITE_IOERR_LOCK                     = 3850
   338  	SQLITE_IOERR_MMAP                     = 6154
   339  	SQLITE_IOERR_NOMEM                    = 3082
   340  	SQLITE_IOERR_RDLOCK                   = 2314
   341  	SQLITE_IOERR_READ                     = 266
   342  	SQLITE_IOERR_ROLLBACK_ATOMIC          = 7946
   343  	SQLITE_IOERR_SEEK                     = 5642
   344  	SQLITE_IOERR_SHMLOCK                  = 5130
   345  	SQLITE_IOERR_SHMMAP                   = 5386
   346  	SQLITE_IOERR_SHMOPEN                  = 4618
   347  	SQLITE_IOERR_SHMSIZE                  = 4874
   348  	SQLITE_IOERR_SHORT_READ               = 522
   349  	SQLITE_IOERR_TRUNCATE                 = 1546
   350  	SQLITE_IOERR_UNLOCK                   = 2058
   351  	SQLITE_IOERR_VNODE                    = 6922
   352  	SQLITE_IOERR_WRITE                    = 778
   353  	SQLITE_LAST_ERRNO                     = 4
   354  	SQLITE_LIKE_DOESNT_MATCH_BLOBS        = 1
   355  	SQLITE_LIMIT_ATTACHED                 = 7
   356  	SQLITE_LIMIT_COLUMN                   = 2
   357  	SQLITE_LIMIT_COMPOUND_SELECT          = 4
   358  	SQLITE_LIMIT_EXPR_DEPTH               = 3
   359  	SQLITE_LIMIT_FUNCTION_ARG             = 6
   360  	SQLITE_LIMIT_LENGTH                   = 0
   361  	SQLITE_LIMIT_LIKE_PATTERN_LENGTH      = 8
   362  	SQLITE_LIMIT_SQL_LENGTH               = 1
   363  	SQLITE_LIMIT_TRIGGER_DEPTH            = 10
   364  	SQLITE_LIMIT_VARIABLE_NUMBER          = 9
   365  	SQLITE_LIMIT_VDBE_OP                  = 5
   366  	SQLITE_LIMIT_WORKER_THREADS           = 11
   367  	SQLITE_LOCKED                         = 6
   368  	SQLITE_LOCKED_SHAREDCACHE             = 262
   369  	SQLITE_LOCKED_VTAB                    = 518
   370  	SQLITE_LOCK_EXCLUSIVE                 = 4
   371  	SQLITE_LOCK_NONE                      = 0
   372  	SQLITE_LOCK_PENDING                   = 3
   373  	SQLITE_LOCK_RESERVED                  = 2
   374  	SQLITE_LOCK_SHARED                    = 1
   375  	SQLITE_MISMATCH                       = 20
   376  	SQLITE_MISUSE                         = 21
   377  	SQLITE_MUTEX_APPDEF                   = 1
   378  	SQLITE_MUTEX_FAST                     = 0
   379  	SQLITE_MUTEX_NOOP                     = 1
   380  	SQLITE_MUTEX_RECURSIVE                = 1
   381  	SQLITE_MUTEX_STATIC_APP1              = 8
   382  	SQLITE_MUTEX_STATIC_APP2              = 9
   383  	SQLITE_MUTEX_STATIC_APP3              = 10
   384  	SQLITE_MUTEX_STATIC_LRU               = 6
   385  	SQLITE_MUTEX_STATIC_LRU2              = 7
   386  	SQLITE_MUTEX_STATIC_MAIN              = 2
   387  	SQLITE_MUTEX_STATIC_MASTER            = 2
   388  	SQLITE_MUTEX_STATIC_MEM               = 3
   389  	SQLITE_MUTEX_STATIC_MEM2              = 4
   390  	SQLITE_MUTEX_STATIC_OPEN              = 4
   391  	SQLITE_MUTEX_STATIC_PMEM              = 7
   392  	SQLITE_MUTEX_STATIC_PRNG              = 5
   393  	SQLITE_MUTEX_STATIC_VFS1              = 11
   394  	SQLITE_MUTEX_STATIC_VFS2              = 12
   395  	SQLITE_MUTEX_STATIC_VFS3              = 13
   396  	SQLITE_NOLFS                          = 22
   397  	SQLITE_NOMEM                          = 7
   398  	SQLITE_NOTADB                         = 26
   399  	SQLITE_NOTFOUND                       = 12
   400  	SQLITE_NOTICE                         = 27
   401  	SQLITE_NOTICE_RECOVER_ROLLBACK        = 539
   402  	SQLITE_NOTICE_RECOVER_WAL             = 283
   403  	SQLITE_NULL                           = 5
   404  	SQLITE_OK                             = 0
   405  	SQLITE_OK_LOAD_PERMANENTLY            = 256
   406  	SQLITE_OK_SYMLINK                     = 512
   407  	SQLITE_OMIT_LOAD_EXTENSION            = 1
   408  	SQLITE_OPEN_AUTOPROXY                 = 0x00000020
   409  	SQLITE_OPEN_CREATE                    = 0x00000004
   410  	SQLITE_OPEN_DELETEONCLOSE             = 0x00000008
   411  	SQLITE_OPEN_EXCLUSIVE                 = 0x00000010
   412  	SQLITE_OPEN_EXRESCODE                 = 0x02000000
   413  	SQLITE_OPEN_FULLMUTEX                 = 0x00010000
   414  	SQLITE_OPEN_MAIN_DB                   = 0x00000100
   415  	SQLITE_OPEN_MAIN_JOURNAL              = 0x00000800
   416  	SQLITE_OPEN_MASTER_JOURNAL            = 0x00004000
   417  	SQLITE_OPEN_MEMORY                    = 0x00000080
   418  	SQLITE_OPEN_NOFOLLOW                  = 0x01000000
   419  	SQLITE_OPEN_NOMUTEX                   = 0x00008000
   420  	SQLITE_OPEN_PRIVATECACHE              = 0x00040000
   421  	SQLITE_OPEN_READONLY                  = 0x00000001
   422  	SQLITE_OPEN_READWRITE                 = 0x00000002
   423  	SQLITE_OPEN_SHAREDCACHE               = 0x00020000
   424  	SQLITE_OPEN_SUBJOURNAL                = 0x00002000
   425  	SQLITE_OPEN_SUPER_JOURNAL             = 0x00004000
   426  	SQLITE_OPEN_TEMP_DB                   = 0x00000200
   427  	SQLITE_OPEN_TEMP_JOURNAL              = 0x00001000
   428  	SQLITE_OPEN_TRANSIENT_DB              = 0x00000400
   429  	SQLITE_OPEN_URI                       = 0x00000040
   430  	SQLITE_OPEN_WAL                       = 0x00080000
   431  	SQLITE_PERM                           = 3
   432  	SQLITE_PRAGMA                         = 19
   433  	SQLITE_PREPARE_NORMALIZE              = 0x02
   434  	SQLITE_PREPARE_NO_VTAB                = 0x04
   435  	SQLITE_PREPARE_PERSISTENT             = 0x01
   436  	SQLITE_PROTOCOL                       = 15
   437  	SQLITE_RANGE                          = 25
   438  	SQLITE_READ                           = 20
   439  	SQLITE_READONLY                       = 8
   440  	SQLITE_READONLY_CANTINIT              = 1288
   441  	SQLITE_READONLY_CANTLOCK              = 520
   442  	SQLITE_READONLY_DBMOVED               = 1032
   443  	SQLITE_READONLY_DIRECTORY             = 1544
   444  	SQLITE_READONLY_RECOVERY              = 264
   445  	SQLITE_READONLY_ROLLBACK              = 776
   446  	SQLITE_RECURSIVE                      = 33
   447  	SQLITE_REINDEX                        = 27
   448  	SQLITE_REPLACE                        = 5
   449  	SQLITE_ROLLBACK                       = 1
   450  	SQLITE_ROW                            = 100
   451  	SQLITE_SAVEPOINT                      = 32
   452  	SQLITE_SCANSTAT_EST                   = 2
   453  	SQLITE_SCANSTAT_EXPLAIN               = 4
   454  	SQLITE_SCANSTAT_NAME                  = 3
   455  	SQLITE_SCANSTAT_NLOOP                 = 0
   456  	SQLITE_SCANSTAT_NVISIT                = 1
   457  	SQLITE_SCANSTAT_SELECTID              = 5
   458  	SQLITE_SCHEMA                         = 17
   459  	SQLITE_SELECT                         = 21
   460  	SQLITE_SERIALIZE_NOCOPY               = 0x001
   461  	SQLITE_SERIES_CONSTRAINT_VERIFY       = 1
   462  	SQLITE_SERVER                         = 1
   463  	SQLITE_SESSION_CONFIG_STRMSIZE        = 1
   464  	SQLITE_SESSION_OBJCONFIG_SIZE         = 1
   465  	SQLITE_SET_LOCKPROXYFILE              = 3
   466  	SQLITE_SHM_EXCLUSIVE                  = 8
   467  	SQLITE_SHM_LOCK                       = 2
   468  	SQLITE_SHM_NLOCK                      = 8
   469  	SQLITE_SHM_SHARED                     = 4
   470  	SQLITE_SHM_UNLOCK                     = 1
   471  	SQLITE_SOUNDEX                        = 1
   472  	SQLITE_SOURCE_ID                      = "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
   473  	SQLITE_STATUS_MALLOC_COUNT            = 9
   474  	SQLITE_STATUS_MALLOC_SIZE             = 5
   475  	SQLITE_STATUS_MEMORY_USED             = 0
   476  	SQLITE_STATUS_PAGECACHE_OVERFLOW      = 2
   477  	SQLITE_STATUS_PAGECACHE_SIZE          = 7
   478  	SQLITE_STATUS_PAGECACHE_USED          = 1
   479  	SQLITE_STATUS_PARSER_STACK            = 6
   480  	SQLITE_STATUS_SCRATCH_OVERFLOW        = 4
   481  	SQLITE_STATUS_SCRATCH_SIZE            = 8
   482  	SQLITE_STATUS_SCRATCH_USED            = 3
   483  	SQLITE_STDCALL                        = 0
   484  	SQLITE_STMTSTATUS_AUTOINDEX           = 3
   485  	SQLITE_STMTSTATUS_FILTER_HIT          = 8
   486  	SQLITE_STMTSTATUS_FILTER_MISS         = 7
   487  	SQLITE_STMTSTATUS_FULLSCAN_STEP       = 1
   488  	SQLITE_STMTSTATUS_MEMUSED             = 99
   489  	SQLITE_STMTSTATUS_REPREPARE           = 5
   490  	SQLITE_STMTSTATUS_RUN                 = 6
   491  	SQLITE_STMTSTATUS_SORT                = 2
   492  	SQLITE_STMTSTATUS_VM_STEP             = 4
   493  	SQLITE_SUBTYPE                        = 0x000100000
   494  	SQLITE_SYNC_DATAONLY                  = 0x00010
   495  	SQLITE_SYNC_FULL                      = 0x00003
   496  	SQLITE_SYNC_NORMAL                    = 0x00002
   497  	SQLITE_SYSAPI                         = 0
   498  	SQLITE_TEMP_STORE                     = 1
   499  	SQLITE_TEST                           = 1
   500  	SQLITE_TESTCTRL_ALWAYS                = 13
   501  	SQLITE_TESTCTRL_ASSERT                = 12
   502  	SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   = 10
   503  	SQLITE_TESTCTRL_BITVEC_TEST           = 8
   504  	SQLITE_TESTCTRL_BYTEORDER             = 22
   505  	SQLITE_TESTCTRL_EXPLAIN_STMT          = 19
   506  	SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   = 29
   507  	SQLITE_TESTCTRL_FAULT_INSTALL         = 9
   508  	SQLITE_TESTCTRL_FIRST                 = 5
   509  	SQLITE_TESTCTRL_IMPOSTER              = 25
   510  	SQLITE_TESTCTRL_INTERNAL_FUNCTIONS    = 17
   511  	SQLITE_TESTCTRL_ISINIT                = 23
   512  	SQLITE_TESTCTRL_ISKEYWORD             = 16
   513  	SQLITE_TESTCTRL_LAST                  = 33
   514  	SQLITE_TESTCTRL_LOCALTIME_FAULT       = 18
   515  	SQLITE_TESTCTRL_LOGEST                = 33
   516  	SQLITE_TESTCTRL_NEVER_CORRUPT         = 20
   517  	SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD  = 19
   518  	SQLITE_TESTCTRL_OPTIMIZATIONS         = 15
   519  	SQLITE_TESTCTRL_PARSER_COVERAGE       = 26
   520  	SQLITE_TESTCTRL_PENDING_BYTE          = 11
   521  	SQLITE_TESTCTRL_PRNG_RESET            = 7
   522  	SQLITE_TESTCTRL_PRNG_RESTORE          = 6
   523  	SQLITE_TESTCTRL_PRNG_SAVE             = 5
   524  	SQLITE_TESTCTRL_PRNG_SEED             = 28
   525  	SQLITE_TESTCTRL_RESERVE               = 14
   526  	SQLITE_TESTCTRL_RESULT_INTREAL        = 27
   527  	SQLITE_TESTCTRL_SCRATCHMALLOC         = 17
   528  	SQLITE_TESTCTRL_SEEK_COUNT            = 30
   529  	SQLITE_TESTCTRL_SORTER_MMAP           = 24
   530  	SQLITE_TESTCTRL_TRACEFLAGS            = 31
   531  	SQLITE_TESTCTRL_TUNE                  = 32
   532  	SQLITE_TESTCTRL_VDBE_COVERAGE         = 21
   533  	SQLITE_TEXT                           = 3
   534  	SQLITE_THREADSAFE                     = 1
   535  	SQLITE_TOOBIG                         = 18
   536  	SQLITE_TRACE_CLOSE                    = 0x08
   537  	SQLITE_TRACE_PROFILE                  = 0x02
   538  	SQLITE_TRACE_ROW                      = 0x04
   539  	SQLITE_TRACE_STMT                     = 0x01
   540  	SQLITE_TRANSACTION                    = 22
   541  	SQLITE_TXN_NONE                       = 0
   542  	SQLITE_TXN_READ                       = 1
   543  	SQLITE_TXN_WRITE                      = 2
   544  	SQLITE_UPDATE                         = 23
   545  	SQLITE_UTF16                          = 4
   546  	SQLITE_UTF16BE                        = 3
   547  	SQLITE_UTF16LE                        = 2
   548  	SQLITE_UTF16_ALIGNED                  = 8
   549  	SQLITE_UTF8                           = 1
   550  	SQLITE_VERSION                        = "3.39.3"
   551  	SQLITE_VERSION_NUMBER                 = 3039003
   552  	SQLITE_VTAB_CONSTRAINT_SUPPORT        = 1
   553  	SQLITE_VTAB_DIRECTONLY                = 3
   554  	SQLITE_VTAB_INNOCUOUS                 = 2
   555  	SQLITE_WARNING                        = 28
   556  	SQLITE_WARNING_AUTOINDEX              = 284
   557  	SQLITE_WIN32_DATA_DIRECTORY_TYPE      = 1
   558  	SQLITE_WIN32_TEMP_DIRECTORY_TYPE      = 2
   559  	TMP_MAX                               = 238328
   560  	UNIQUE_TABLE_NAME                     = "t592690916721053953805701627921227776"
   561  	X_ANSI_STDARG_H_                      = 0
   562  	X_ASSERT_H                            = 1
   563  	X_ATFILE_SOURCE                       = 1
   564  	X_BITS_STDIO_LIM_H                    = 1
   565  	X_BITS_TIME64_H                       = 1
   566  	X_BITS_TYPESIZES_H                    = 1
   567  	X_BITS_TYPES_H                        = 1
   568  	X_BITS_TYPES_LOCALE_T_H               = 1
   569  	X_BITS_TYPES___LOCALE_T_H             = 1
   570  	X_BSD_SIZE_T_                         = 0
   571  	X_BSD_SIZE_T_DEFINED_                 = 0
   572  	X_DEFAULT_SOURCE                      = 1
   573  	X_FEATURES_H                          = 1
   574  	X_FILE_OFFSET_BITS                    = 64
   575  	X_FTS5_H                              = 0
   576  	X_GCC_SIZE_T                          = 0
   577  	X_HAVE_SQLITE_CONFIG_H                = 1
   578  	X_IOFBF                               = 0
   579  	X_IOLBF                               = 1
   580  	X_IONBF                               = 2
   581  	X_IO_EOF_SEEN                         = 0x0010
   582  	X_IO_ERR_SEEN                         = 0x0020
   583  	X_IO_USER_LOCK                        = 0x8000
   584  	X_LP64                                = 1
   585  	X_POSIX_C_SOURCE                      = 200809
   586  	X_POSIX_SOURCE                        = 1
   587  	X_SIZET_                              = 0
   588  	X_SIZE_T                              = 0
   589  	X_SIZE_T_                             = 0
   590  	X_SIZE_T_DECLARED                     = 0
   591  	X_SIZE_T_DEFINED                      = 0
   592  	X_SIZE_T_DEFINED_                     = 0
   593  	X_SQLITE3RTREE_H_                     = 0
   594  	X_STDARG_H                            = 0
   595  	X_STDC_PREDEF_H                       = 1
   596  	X_STDIO_H                             = 1
   597  	X_STRINGS_H                           = 1
   598  	X_STRING_H                            = 1
   599  	X_SYS_CDEFS_H                         = 1
   600  	X_SYS_SIZE_T_H                        = 0
   601  	X_T_SIZE                              = 0
   602  	X_T_SIZE_                             = 0
   603  	X_VA_LIST                             = 0
   604  	X_VA_LIST_                            = 0
   605  	X_VA_LIST_DEFINED                     = 0
   606  	X_VA_LIST_T_H                         = 0
   607  	Linux                                 = 1
   608  	Unix                                  = 1
   609  	CRTIMPORT                             = 0
   610  	DLLIMPORT                             = 0
   611  	INLINE                                = 0
   612  	MP_DIGIT_DECLARED                     = 0
   613  	MP_INT_DECLARED                       = 0
   614  	NUM_STATIC_TOKENS                     = 20
   615  	SQLITE_TCLAPI                         = 0
   616  	TCL_ALLOW_INLINE_COMPILATION          = 0x20000
   617  	TCL_ALL_EVENTS                        = -3
   618  	TCL_ALPHA_RELEASE                     = 0
   619  	TCL_APPEND_VALUE                      = 4
   620  	TCL_ARGV_CONSTANT                     = 15
   621  	TCL_ARGV_END                          = 23
   622  	TCL_ARGV_FLOAT                        = 19
   623  	TCL_ARGV_FUNC                         = 20
   624  	TCL_ARGV_GENFUNC                      = 21
   625  	TCL_ARGV_HELP                         = 22
   626  	TCL_ARGV_INT                          = 16
   627  	TCL_ARGV_REST                         = 18
   628  	TCL_ARGV_STRING                       = 17
   629  	TCL_BETA_RELEASE                      = 1
   630  	TCL_BREAK                             = 3
   631  	TCL_CANCEL_UNWIND                     = 0x100000
   632  	TCL_CHANNEL_THREAD_INSERT             = 0
   633  	TCL_CHANNEL_THREAD_REMOVE             = 1
   634  	TCL_CLOSE_READ                        = 2
   635  	TCL_CLOSE_WRITE                       = 4
   636  	TCL_CONTINUE                          = 4
   637  	TCL_CONVERT_MULTIBYTE                 = -1
   638  	TCL_CONVERT_NOSPACE                   = -4
   639  	TCL_CONVERT_SYNTAX                    = -2
   640  	TCL_CONVERT_UNKNOWN                   = -3
   641  	TCL_CREATE_HARD_LINK                  = 0x02
   642  	TCL_CREATE_SYMBOLIC_LINK              = 0x01
   643  	TCL_CUSTOM_PTR_KEYS                   = -1
   644  	TCL_CUSTOM_TYPE_KEYS                  = -2
   645  	TCL_DONT_QUOTE_HASH                   = 8
   646  	TCL_DONT_USE_BRACES                   = 1
   647  	TCL_DONT_WAIT                         = 2
   648  	TCL_DOUBLE_SPACE                      = 27
   649  	TCL_DSTRING_STATIC_SIZE               = 200
   650  	TCL_ENCODING_CHAR_LIMIT               = 0x10
   651  	TCL_ENCODING_END                      = 0x02
   652  	TCL_ENCODING_NO_TERMINATE             = 0x08
   653  	TCL_ENCODING_START                    = 0x01
   654  	TCL_ENCODING_STOPONERROR              = 0x04
   655  	TCL_ENFORCE_MODE                      = 16
   656  	TCL_ENSEMBLE_PREFIX                   = 0x02
   657  	TCL_ERROR                             = 1
   658  	TCL_EVAL_DIRECT                       = 0x040000
   659  	TCL_EVAL_GLOBAL                       = 0x020000
   660  	TCL_EVAL_INVOKE                       = 0x080000
   661  	TCL_EVAL_NOERR                        = 0x200000
   662  	TCL_EXACT                             = 1
   663  	TCL_EXCEPTION                         = 8
   664  	TCL_FILE_EVENTS                       = 8
   665  	TCL_FINAL_RELEASE                     = 2
   666  	TCL_GLOBAL_ONLY                       = 1
   667  	TCL_GLOB_PERM_HIDDEN                  = 2
   668  	TCL_GLOB_PERM_R                       = 4
   669  	TCL_GLOB_PERM_RONLY                   = 1
   670  	TCL_GLOB_PERM_W                       = 8
   671  	TCL_GLOB_PERM_X                       = 16
   672  	TCL_GLOB_TYPE_BLOCK                   = 1
   673  	TCL_GLOB_TYPE_CHAR                    = 2
   674  	TCL_GLOB_TYPE_DIR                     = 4
   675  	TCL_GLOB_TYPE_FILE                    = 16
   676  	TCL_GLOB_TYPE_LINK                    = 32
   677  	TCL_GLOB_TYPE_MOUNT                   = 128
   678  	TCL_GLOB_TYPE_PIPE                    = 8
   679  	TCL_GLOB_TYPE_SOCK                    = 64
   680  	TCL_HASH_KEY_RANDOMIZE_HASH           = 0x1
   681  	TCL_HASH_KEY_STORE_HASH               = 1
   682  	TCL_HASH_KEY_SYSTEM_HASH              = 0x2
   683  	TCL_HASH_KEY_TYPE_VERSION             = 1
   684  	TCL_IDLE_EVENTS                       = 32
   685  	TCL_INTEGER_SPACE                     = 24
   686  	TCL_INTERP_DESTROYED                  = 0x100
   687  	TCL_LEAVE_ERR_MSG                     = 0x200
   688  	TCL_LIMIT_COMMANDS                    = 0x01
   689  	TCL_LIMIT_TIME                        = 0x02
   690  	TCL_LINK_BOOLEAN                      = 3
   691  	TCL_LINK_CHAR                         = 6
   692  	TCL_LINK_DOUBLE                       = 2
   693  	TCL_LINK_FLOAT                        = 13
   694  	TCL_LINK_INT                          = 1
   695  	TCL_LINK_LONG                         = 11
   696  	TCL_LINK_READ_ONLY                    = 0x80
   697  	TCL_LINK_SHORT                        = 8
   698  	TCL_LINK_STRING                       = 4
   699  	TCL_LINK_UCHAR                        = 7
   700  	TCL_LINK_UINT                         = 10
   701  	TCL_LINK_ULONG                        = 12
   702  	TCL_LINK_USHORT                       = 9
   703  	TCL_LINK_WIDE_INT                     = 5
   704  	TCL_LINK_WIDE_UINT                    = 14
   705  	TCL_LIST_ELEMENT                      = 8
   706  	TCL_LL_MODIFIER                       = "ll"
   707  	TCL_LOAD_GLOBAL                       = 1
   708  	TCL_LOAD_LAZY                         = 2
   709  	TCL_MAJOR_VERSION                     = 8
   710  	TCL_MATCH_NOCASE                      = 1
   711  	TCL_MAX_PREC                          = 17
   712  	TCL_MINOR_VERSION                     = 6
   713  	TCL_MODE_BLOCKING                     = 0
   714  	TCL_MODE_NONBLOCKING                  = 1
   715  	TCL_NAMESPACE_ONLY                    = 2
   716  	TCL_NORETURN1                         = 0
   717  	TCL_NO_EVAL                           = 0x010000
   718  	TCL_OK                                = 0
   719  	TCL_ONE_WORD_KEYS                     = 1
   720  	TCL_PARSE_BAD_NUMBER                  = 9
   721  	TCL_PARSE_BRACE_EXTRA                 = 2
   722  	TCL_PARSE_MISSING_BRACE               = 3
   723  	TCL_PARSE_MISSING_BRACKET             = 4
   724  	TCL_PARSE_MISSING_PAREN               = 5
   725  	TCL_PARSE_MISSING_QUOTE               = 6
   726  	TCL_PARSE_MISSING_VAR_BRACE           = 7
   727  	TCL_PARSE_PART1                       = 0x400
   728  	TCL_PARSE_QUOTE_EXTRA                 = 1
   729  	TCL_PARSE_SUCCESS                     = 0
   730  	TCL_PARSE_SYNTAX                      = 8
   731  	TCL_PATCH_LEVEL                       = "8.6.11"
   732  	TCL_READABLE                          = 2
   733  	TCL_REG_ADVANCED                      = 000003
   734  	TCL_REG_ADVF                          = 000002
   735  	TCL_REG_BASIC                         = 000000
   736  	TCL_REG_CANMATCH                      = 001000
   737  	TCL_REG_EXPANDED                      = 000040
   738  	TCL_REG_EXTENDED                      = 000001
   739  	TCL_REG_NEWLINE                       = 000300
   740  	TCL_REG_NLANCH                        = 000200
   741  	TCL_REG_NLSTOP                        = 000100
   742  	TCL_REG_NOCASE                        = 000010
   743  	TCL_REG_NOSUB                         = 000020
   744  	TCL_REG_NOTBOL                        = 0001
   745  	TCL_REG_NOTEOL                        = 0002
   746  	TCL_REG_QUOTE                         = 000004
   747  	TCL_RELEASE_LEVEL                     = 2
   748  	TCL_RELEASE_SERIAL                    = 11
   749  	TCL_RESULT_SIZE                       = 200
   750  	TCL_RETURN                            = 2
   751  	TCL_SERVICE_ALL                       = 1
   752  	TCL_SERVICE_NONE                      = 0
   753  	TCL_SMALL_HASH_TABLE                  = 4
   754  	TCL_STDERR                            = 8
   755  	TCL_STDIN                             = 2
   756  	TCL_STDOUT                            = 4
   757  	TCL_STORAGE_CLASS                     = 0
   758  	TCL_STRING_KEYS                       = 0
   759  	TCL_SUBST_ALL                         = 007
   760  	TCL_SUBST_BACKSLASHES                 = 004
   761  	TCL_SUBST_COMMANDS                    = 001
   762  	TCL_SUBST_VARIABLES                   = 002
   763  	TCL_THREAD_CREATE_RETURN              = 0
   764  	TCL_THREAD_JOINABLE                   = 1
   765  	TCL_THREAD_NOFLAGS                    = 0
   766  	TCL_THREAD_STACK_DEFAULT              = 0
   767  	TCL_TIMER_EVENTS                      = 16
   768  	TCL_TOKEN_BS                          = 8
   769  	TCL_TOKEN_COMMAND                     = 16
   770  	TCL_TOKEN_EXPAND_WORD                 = 256
   771  	TCL_TOKEN_OPERATOR                    = 128
   772  	TCL_TOKEN_SIMPLE_WORD                 = 2
   773  	TCL_TOKEN_SUB_EXPR                    = 64
   774  	TCL_TOKEN_TEXT                        = 4
   775  	TCL_TOKEN_VARIABLE                    = 32
   776  	TCL_TOKEN_WORD                        = 1
   777  	TCL_TRACE_ARRAY                       = 0x800
   778  	TCL_TRACE_DELETE                      = 0x4000
   779  	TCL_TRACE_DESTROYED                   = 0x80
   780  	TCL_TRACE_OLD_STYLE                   = 0x1000
   781  	TCL_TRACE_READS                       = 0x10
   782  	TCL_TRACE_RENAME                      = 0x2000
   783  	TCL_TRACE_RESULT_DYNAMIC              = 0x8000
   784  	TCL_TRACE_RESULT_OBJECT               = 0x10000
   785  	TCL_TRACE_UNSETS                      = 0x40
   786  	TCL_TRACE_WRITES                      = 0x20
   787  	TCL_UNLOAD_DETACH_FROM_INTERPRETER    = 1
   788  	TCL_UNLOAD_DETACH_FROM_PROCESS        = 2
   789  	TCL_UTF_MAX                           = 3
   790  	TCL_VERSION                           = "8.6"
   791  	TCL_WINDOW_EVENTS                     = 4
   792  	TCL_WRITABLE                          = 4
   793  	TCL_ZLIB_COMPRESS_BEST                = 9
   794  	TCL_ZLIB_COMPRESS_DEFAULT             = -1
   795  	TCL_ZLIB_COMPRESS_FAST                = 1
   796  	TCL_ZLIB_COMPRESS_NONE                = 0
   797  	TCL_ZLIB_FINALIZE                     = 4
   798  	TCL_ZLIB_FLUSH                        = 2
   799  	TCL_ZLIB_FORMAT_AUTO                  = 8
   800  	TCL_ZLIB_FORMAT_GZIP                  = 4
   801  	TCL_ZLIB_FORMAT_RAW                   = 1
   802  	TCL_ZLIB_FORMAT_ZLIB                  = 2
   803  	TCL_ZLIB_FULLFLUSH                    = 3
   804  	TCL_ZLIB_NO_FLUSH                     = 0
   805  	TCL_ZLIB_STREAM_DEFLATE               = 16
   806  	TCL_ZLIB_STREAM_INFLATE               = 32
   807  	X_CLIENTDATA                          = 0
   808  	X_TCL                                 = 0
   809  	X_TCLDECLS                            = 0
   810  	X_TCLPLATDECLS                        = 0
   811  	X_FTSINT_H                            = 0
   812  	FTS3_TOK_SCHEMA                       = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
   813  	APND_MARK_FOS_SZ                      = 8
   814  	APND_MARK_PREFIX                      = "Start-Of-SQLite3-"
   815  	APND_MARK_PREFIX_SZ                   = 17
   816  	APND_MARK_SIZE                        = 25
   817  	APND_MAX_SIZE                         = 1073741824
   818  	APND_ROUNDUP                          = 4096
   819  	SQLITE3EXT_H                          = 0
   820  	SQLITE_EXTENSION_INIT1                = 0
   821  	SQLITE_EXTENSION_INIT3                = 0
   822  	AMATCH_COL_COMMAND                    = 3
   823  	AMATCH_COL_DISTANCE                   = 1
   824  	AMATCH_COL_LANGUAGE                   = 2
   825  	AMATCH_COL_NWORD                      = 4
   826  	AMATCH_COL_WORD                       = 0
   827  	AMATCH_MX_COST                        = 1000
   828  	AMATCH_MX_LANGID                      = 2147483647
   829  	AMATCH_MX_LENGTH                      = 50
   830  	BIG_ENDIAN                            = 4321
   831  	BYTE_ORDER                            = 1234
   832  	EXIT_FAILURE                          = 1
   833  	EXIT_SUCCESS                          = 0
   834  	FD_SETSIZE                            = 1024
   835  	LITTLE_ENDIAN                         = 1234
   836  	PDP_ENDIAN                            = 3412
   837  	RAND_MAX                              = 2147483647
   838  	WCONTINUED                            = 8
   839  	WEXITED                               = 4
   840  	WNOHANG                               = 1
   841  	WNOWAIT                               = 0x01000000
   842  	WSTOPPED                              = 2
   843  	WUNTRACED                             = 2
   844  	X_ALLOCA_H                            = 1
   845  	X_BITS_BYTESWAP_H                     = 1
   846  	X_BITS_ENDIANNESS_H                   = 1
   847  	X_BITS_ENDIAN_H                       = 1
   848  	X_BITS_FLOATN_COMMON_H                = 0
   849  	X_BITS_FLOATN_H                       = 0
   850  	X_BITS_PTHREADTYPES_ARCH_H            = 1
   851  	X_BITS_PTHREADTYPES_COMMON_H          = 1
   852  	X_BITS_STDINT_INTN_H                  = 1
   853  	X_BITS_UINTN_IDENTITY_H               = 1
   854  	X_CTYPE_H                             = 1
   855  	X_ENDIAN_H                            = 1
   856  	X_GCC_WCHAR_T                         = 0
   857  	X_RWLOCK_INTERNAL_H                   = 0
   858  	X_STDLIB_H                            = 1
   859  	X_STRUCT_TIMESPEC                     = 1
   860  	X_SYS_SELECT_H                        = 1
   861  	X_SYS_TYPES_H                         = 1
   862  	X_THREAD_MUTEX_INTERNAL_H             = 1
   863  	X_THREAD_SHARED_TYPES_H               = 1
   864  	X_T_WCHAR                             = 0
   865  	X_T_WCHAR_                            = 0
   866  	X_WCHAR_T                             = 0
   867  	X_WCHAR_T_                            = 0
   868  	X_WCHAR_T_DECLARED                    = 0
   869  	X_WCHAR_T_DEFINED                     = 0
   870  	X_WCHAR_T_DEFINED_                    = 0
   871  	X_WCHAR_T_H                           = 0
   872  	CARRAY_COLUMN_COUNT                   = 2
   873  	CARRAY_COLUMN_CTYPE                   = 3
   874  	CARRAY_COLUMN_POINTER                 = 1
   875  	CARRAY_COLUMN_VALUE                   = 0
   876  	CARRAY_DOUBLE                         = 2
   877  	CARRAY_INT32                          = 0
   878  	CARRAY_INT64                          = 1
   879  	CARRAY_TEXT                           = 3
   880  	CLOSURE_COL_DEPTH                     = 1
   881  	CLOSURE_COL_ID                        = 0
   882  	CLOSURE_COL_IDCOLUMN                  = 4
   883  	CLOSURE_COL_PARENTCOLUMN              = 5
   884  	CLOSURE_COL_ROOT                      = 2
   885  	CLOSURE_COL_TABLENAME                 = 3
   886  	CSVTEST_FIDX                          = 0x0001
   887  	CSV_INBUFSZ                           = 1024
   888  	CSV_MXERR                             = 200
   889  	EXPLN_COLUMN_ADDR                     = 0
   890  	EXPLN_COLUMN_COMMENT                  = 7
   891  	EXPLN_COLUMN_OPCODE                   = 1
   892  	EXPLN_COLUMN_P1                       = 2
   893  	EXPLN_COLUMN_P2                       = 3
   894  	EXPLN_COLUMN_P3                       = 4
   895  	EXPLN_COLUMN_P4                       = 5
   896  	EXPLN_COLUMN_P5                       = 6
   897  	EXPLN_COLUMN_SQL                      = 8
   898  	ACCESSPERMS                           = 511
   899  	AIO_PRIO_DELTA_MAX                    = 20
   900  	ALLPERMS                              = 4095
   901  	AT_EACCESS                            = 0x200
   902  	AT_FDCWD                              = -100
   903  	AT_REMOVEDIR                          = 0x200
   904  	AT_SYMLINK_FOLLOW                     = 0x400
   905  	AT_SYMLINK_NOFOLLOW                   = 0x100
   906  	CLOCK_BOOTTIME                        = 7
   907  	CLOCK_BOOTTIME_ALARM                  = 9
   908  	CLOCK_MONOTONIC                       = 1
   909  	CLOCK_MONOTONIC_COARSE                = 6
   910  	CLOCK_MONOTONIC_RAW                   = 4
   911  	CLOCK_PROCESS_CPUTIME_ID              = 2
   912  	CLOCK_REALTIME                        = 0
   913  	CLOCK_REALTIME_ALARM                  = 8
   914  	CLOCK_REALTIME_COARSE                 = 5
   915  	CLOCK_TAI                             = 11
   916  	CLOCK_THREAD_CPUTIME_ID               = 3
   917  	DEFFILEMODE                           = 438
   918  	DELAYTIMER_MAX                        = 2147483647
   919  	E2BIG                                 = 7
   920  	EACCES                                = 13
   921  	EADDRINUSE                            = 98
   922  	EADDRNOTAVAIL                         = 99
   923  	EADV                                  = 68
   924  	EAFNOSUPPORT                          = 97
   925  	EAGAIN                                = 11
   926  	EALREADY                              = 114
   927  	EBADE                                 = 52
   928  	EBADF                                 = 9
   929  	EBADFD                                = 77
   930  	EBADMSG                               = 74
   931  	EBADR                                 = 53
   932  	EBADRQC                               = 56
   933  	EBADSLT                               = 57
   934  	EBFONT                                = 59
   935  	EBUSY                                 = 16
   936  	ECANCELED                             = 125
   937  	ECHILD                                = 10
   938  	ECHRNG                                = 44
   939  	ECOMM                                 = 70
   940  	ECONNABORTED                          = 103
   941  	ECONNREFUSED                          = 111
   942  	ECONNRESET                            = 104
   943  	EDEADLK                               = 35
   944  	EDEADLOCK                             = 35
   945  	EDESTADDRREQ                          = 89
   946  	EDOM                                  = 33
   947  	EDOTDOT                               = 73
   948  	EDQUOT                                = 122
   949  	EEXIST                                = 17
   950  	EFAULT                                = 14
   951  	EFBIG                                 = 27
   952  	EHOSTDOWN                             = 112
   953  	EHOSTUNREACH                          = 113
   954  	EHWPOISON                             = 133
   955  	EIDRM                                 = 43
   956  	EILSEQ                                = 84
   957  	EINPROGRESS                           = 115
   958  	EINTR                                 = 4
   959  	EINVAL                                = 22
   960  	EIO                                   = 5
   961  	EISCONN                               = 106
   962  	EISDIR                                = 21
   963  	EISNAM                                = 120
   964  	EKEYEXPIRED                           = 127
   965  	EKEYREJECTED                          = 129
   966  	EKEYREVOKED                           = 128
   967  	EL2HLT                                = 51
   968  	EL2NSYNC                              = 45
   969  	EL3HLT                                = 46
   970  	EL3RST                                = 47
   971  	ELIBACC                               = 79
   972  	ELIBBAD                               = 80
   973  	ELIBEXEC                              = 83
   974  	ELIBMAX                               = 82
   975  	ELIBSCN                               = 81
   976  	ELNRNG                                = 48
   977  	ELOOP                                 = 40
   978  	EMEDIUMTYPE                           = 124
   979  	EMFILE                                = 24
   980  	EMLINK                                = 31
   981  	EMSGSIZE                              = 90
   982  	EMULTIHOP                             = 72
   983  	ENAMETOOLONG                          = 36
   984  	ENAVAIL                               = 119
   985  	ENETDOWN                              = 100
   986  	ENETRESET                             = 102
   987  	ENETUNREACH                           = 101
   988  	ENFILE                                = 23
   989  	ENOANO                                = 55
   990  	ENOBUFS                               = 105
   991  	ENOCSI                                = 50
   992  	ENODATA                               = 61
   993  	ENODEV                                = 19
   994  	ENOENT                                = 2
   995  	ENOEXEC                               = 8
   996  	ENOKEY                                = 126
   997  	ENOLCK                                = 37
   998  	ENOLINK                               = 67
   999  	ENOMEDIUM                             = 123
  1000  	ENOMEM                                = 12
  1001  	ENOMSG                                = 42
  1002  	ENONET                                = 64
  1003  	ENOPKG                                = 65
  1004  	ENOPROTOOPT                           = 92
  1005  	ENOSPC                                = 28
  1006  	ENOSR                                 = 63
  1007  	ENOSTR                                = 60
  1008  	ENOSYS                                = 38
  1009  	ENOTBLK                               = 15
  1010  	ENOTCONN                              = 107
  1011  	ENOTDIR                               = 20
  1012  	ENOTEMPTY                             = 39
  1013  	ENOTNAM                               = 118
  1014  	ENOTRECOVERABLE                       = 131
  1015  	ENOTSOCK                              = 88
  1016  	ENOTSUP                               = 95
  1017  	ENOTTY                                = 25
  1018  	ENOTUNIQ                              = 76
  1019  	ENXIO                                 = 6
  1020  	EOPNOTSUPP                            = 95
  1021  	EOVERFLOW                             = 75
  1022  	EOWNERDEAD                            = 130
  1023  	EPERM                                 = 1
  1024  	EPFNOSUPPORT                          = 96
  1025  	EPIPE                                 = 32
  1026  	EPROTO                                = 71
  1027  	EPROTONOSUPPORT                       = 93
  1028  	EPROTOTYPE                            = 91
  1029  	ERANGE                                = 34
  1030  	EREMCHG                               = 78
  1031  	EREMOTE                               = 66
  1032  	EREMOTEIO                             = 121
  1033  	ERESTART                              = 85
  1034  	ERFKILL                               = 132
  1035  	EROFS                                 = 30
  1036  	ESHUTDOWN                             = 108
  1037  	ESOCKTNOSUPPORT                       = 94
  1038  	ESPIPE                                = 29
  1039  	ESRCH                                 = 3
  1040  	ESRMNT                                = 69
  1041  	ESTALE                                = 116
  1042  	ESTRPIPE                              = 86
  1043  	ETIME                                 = 62
  1044  	ETIMEDOUT                             = 110
  1045  	ETOOMANYREFS                          = 109
  1046  	ETXTBSY                               = 26
  1047  	EUCLEAN                               = 117
  1048  	EUNATCH                               = 49
  1049  	EUSERS                                = 87
  1050  	EWOULDBLOCK                           = 11
  1051  	EXDEV                                 = 18
  1052  	EXFULL                                = 54
  1053  	FAPPEND                               = 1024
  1054  	FASYNC                                = 8192
  1055  	FD_CLOEXEC                            = 1
  1056  	FFSYNC                                = 1052672
  1057  	FNDELAY                               = 2048
  1058  	FNONBLOCK                             = 2048
  1059  	FSDIR_COLUMN_DATA                     = 3
  1060  	FSDIR_COLUMN_DIR                      = 5
  1061  	FSDIR_COLUMN_MODE                     = 1
  1062  	FSDIR_COLUMN_MTIME                    = 2
  1063  	FSDIR_COLUMN_NAME                     = 0
  1064  	FSDIR_COLUMN_PATH                     = 4
  1065  	FSDIR_SCHEMA                          = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1066  	F_DUPFD                               = 0
  1067  	F_DUPFD_CLOEXEC                       = 1030
  1068  	F_EXLCK                               = 4
  1069  	F_GETFD                               = 1
  1070  	F_GETFL                               = 3
  1071  	F_GETLK                               = 5
  1072  	F_GETLK64                             = 5
  1073  	F_GETOWN                              = 9
  1074  	F_LOCK                                = 1
  1075  	F_OK                                  = 0
  1076  	F_RDLCK                               = 0
  1077  	F_SETFD                               = 2
  1078  	F_SETFL                               = 4
  1079  	F_SETLK                               = 6
  1080  	F_SETLK64                             = 6
  1081  	F_SETLKW                              = 7
  1082  	F_SETLKW64                            = 7
  1083  	F_SETOWN                              = 8
  1084  	F_SHLCK                               = 8
  1085  	F_TEST                                = 3
  1086  	F_TLOCK                               = 2
  1087  	F_ULOCK                               = 0
  1088  	F_UNLCK                               = 2
  1089  	F_WRLCK                               = 1
  1090  	HOST_NAME_MAX                         = 64
  1091  	LOCK_EX                               = 2
  1092  	LOCK_NB                               = 4
  1093  	LOCK_SH                               = 1
  1094  	LOCK_UN                               = 8
  1095  	LOGIN_NAME_MAX                        = 256
  1096  	L_INCR                                = 1
  1097  	L_SET                                 = 0
  1098  	L_XTND                                = 2
  1099  	MAXNAMLEN                             = 255
  1100  	MAX_CANON                             = 255
  1101  	MAX_INPUT                             = 255
  1102  	MQ_PRIO_MAX                           = 32768
  1103  	NAME_MAX                              = 255
  1104  	NGROUPS_MAX                           = 65536
  1105  	O_ACCMODE                             = 0003
  1106  	O_APPEND                              = 02000
  1107  	O_ASYNC                               = 020000
  1108  	O_CLOEXEC                             = 524288
  1109  	O_CREAT                               = 0100
  1110  	O_DIRECTORY                           = 16384
  1111  	O_DSYNC                               = 4096
  1112  	O_EXCL                                = 0200
  1113  	O_FSYNC                               = 1052672
  1114  	O_NDELAY                              = 2048
  1115  	O_NOCTTY                              = 0400
  1116  	O_NOFOLLOW                            = 32768
  1117  	O_NONBLOCK                            = 04000
  1118  	O_RDONLY                              = 00
  1119  	O_RDWR                                = 02
  1120  	O_RSYNC                               = 1052672
  1121  	O_SYNC                                = 04010000
  1122  	O_TRUNC                               = 01000
  1123  	O_WRONLY                              = 01
  1124  	PATH_MAX                              = 4096
  1125  	PIPE_BUF                              = 4096
  1126  	POSIX_FADV_DONTNEED                   = 4
  1127  	POSIX_FADV_NOREUSE                    = 5
  1128  	POSIX_FADV_NORMAL                     = 0
  1129  	POSIX_FADV_RANDOM                     = 1
  1130  	POSIX_FADV_SEQUENTIAL                 = 2
  1131  	POSIX_FADV_WILLNEED                   = 3
  1132  	PTHREAD_DESTRUCTOR_ITERATIONS         = 4
  1133  	PTHREAD_KEYS_MAX                      = 1024
  1134  	PTHREAD_STACK_MIN                     = 131072
  1135  	RTSIG_MAX                             = 32
  1136  	R_OK                                  = 4
  1137  	SEM_VALUE_MAX                         = 2147483647
  1138  	STDERR_FILENO                         = 2
  1139  	STDIN_FILENO                          = 0
  1140  	STDOUT_FILENO                         = 1
  1141  	S_BLKSIZE                             = 512
  1142  	S_IEXEC                               = 64
  1143  	S_IFBLK                               = 24576
  1144  	S_IFCHR                               = 8192
  1145  	S_IFDIR                               = 16384
  1146  	S_IFIFO                               = 4096
  1147  	S_IFLNK                               = 40960
  1148  	S_IFMT                                = 61440
  1149  	S_IFREG                               = 32768
  1150  	S_IFSOCK                              = 49152
  1151  	S_IREAD                               = 256
  1152  	S_IRGRP                               = 32
  1153  	S_IROTH                               = 4
  1154  	S_IRUSR                               = 256
  1155  	S_IRWXG                               = 56
  1156  	S_IRWXO                               = 7
  1157  	S_IRWXU                               = 448
  1158  	S_ISGID                               = 1024
  1159  	S_ISUID                               = 2048
  1160  	S_ISVTX                               = 512
  1161  	S_IWGRP                               = 16
  1162  	S_IWOTH                               = 2
  1163  	S_IWRITE                              = 128
  1164  	S_IWUSR                               = 128
  1165  	S_IXGRP                               = 8
  1166  	S_IXOTH                               = 1
  1167  	S_IXUSR                               = 64
  1168  	TIMER_ABSTIME                         = 1
  1169  	TIME_UTC                              = 1
  1170  	TTY_NAME_MAX                          = 32
  1171  	UTIME_NOW                             = 1073741823
  1172  	UTIME_OMIT                            = 1073741822
  1173  	W_OK                                  = 2
  1174  	XATTR_LIST_MAX                        = 65536
  1175  	XATTR_NAME_MAX                        = 255
  1176  	XATTR_SIZE_MAX                        = 65536
  1177  	X_OK                                  = 1
  1178  	X_ASM_GENERIC_ERRNO_BASE_H            = 0
  1179  	X_ASM_GENERIC_ERRNO_H                 = 0
  1180  	X_BITS_ERRNO_H                        = 1
  1181  	X_BITS_POSIX1_LIM_H                   = 1
  1182  	X_BITS_POSIX_OPT_H                    = 1
  1183  	X_BITS_STAT_H                         = 1
  1184  	X_BITS_TIME_H                         = 1
  1185  	X_DIRENT_H                            = 1
  1186  	X_DIRENT_HAVE_D_OFF                   = 0
  1187  	X_DIRENT_HAVE_D_RECLEN                = 0
  1188  	X_DIRENT_HAVE_D_TYPE                  = 0
  1189  	X_DIRENT_MATCHES_DIRENT64             = 1
  1190  	X_ERRNO_H                             = 1
  1191  	X_FCNTL_H                             = 1
  1192  	X_GETOPT_CORE_H                       = 1
  1193  	X_GETOPT_POSIX_H                      = 1
  1194  	X_LFS64_ASYNCHRONOUS_IO               = 1
  1195  	X_LFS64_LARGEFILE                     = 1
  1196  	X_LFS64_STDIO                         = 1
  1197  	X_LFS_ASYNCHRONOUS_IO                 = 1
  1198  	X_LFS_LARGEFILE                       = 1
  1199  	X_LINUX_LIMITS_H                      = 0
  1200  	X_MKNOD_VER                           = 0
  1201  	X_MKNOD_VER_LINUX                     = 0
  1202  	X_POSIX2_CHAR_TERM                    = 200809
  1203  	X_POSIX2_C_BIND                       = 200809
  1204  	X_POSIX2_C_DEV                        = 200809
  1205  	X_POSIX2_C_VERSION                    = 200809
  1206  	X_POSIX2_LOCALEDEF                    = 200809
  1207  	X_POSIX2_SW_DEV                       = 200809
  1208  	X_POSIX2_VERSION                      = 200809
  1209  	X_POSIX_ADVISORY_INFO                 = 200809
  1210  	X_POSIX_AIO_LISTIO_MAX                = 2
  1211  	X_POSIX_AIO_MAX                       = 1
  1212  	X_POSIX_ARG_MAX                       = 4096
  1213  	X_POSIX_ASYNCHRONOUS_IO               = 200809
  1214  	X_POSIX_ASYNC_IO                      = 1
  1215  	X_POSIX_BARRIERS                      = 200809
  1216  	X_POSIX_CHILD_MAX                     = 25
  1217  	X_POSIX_CHOWN_RESTRICTED              = 0
  1218  	X_POSIX_CLOCKRES_MIN                  = 20000000
  1219  	X_POSIX_CLOCK_SELECTION               = 200809
  1220  	X_POSIX_CPUTIME                       = 0
  1221  	X_POSIX_DELAYTIMER_MAX                = 32
  1222  	X_POSIX_FSYNC                         = 200809
  1223  	X_POSIX_HOST_NAME_MAX                 = 255
  1224  	X_POSIX_IPV6                          = 200809
  1225  	X_POSIX_JOB_CONTROL                   = 1
  1226  	X_POSIX_LINK_MAX                      = 8
  1227  	X_POSIX_LOGIN_NAME_MAX                = 9
  1228  	X_POSIX_MAPPED_FILES                  = 200809
  1229  	X_POSIX_MAX_CANON                     = 255
  1230  	X_POSIX_MAX_INPUT                     = 255
  1231  	X_POSIX_MEMLOCK                       = 200809
  1232  	X_POSIX_MEMLOCK_RANGE                 = 200809
  1233  	X_POSIX_MEMORY_PROTECTION             = 200809
  1234  	X_POSIX_MESSAGE_PASSING               = 200809
  1235  	X_POSIX_MONOTONIC_CLOCK               = 0
  1236  	X_POSIX_MQ_OPEN_MAX                   = 8
  1237  	X_POSIX_MQ_PRIO_MAX                   = 32
  1238  	X_POSIX_NAME_MAX                      = 14
  1239  	X_POSIX_NGROUPS_MAX                   = 8
  1240  	X_POSIX_NO_TRUNC                      = 1
  1241  	X_POSIX_OPEN_MAX                      = 20
  1242  	X_POSIX_PATH_MAX                      = 256
  1243  	X_POSIX_PIPE_BUF                      = 512
  1244  	X_POSIX_PRIORITIZED_IO                = 200809
  1245  	X_POSIX_PRIORITY_SCHEDULING           = 200809
  1246  	X_POSIX_RAW_SOCKETS                   = 200809
  1247  	X_POSIX_READER_WRITER_LOCKS           = 200809
  1248  	X_POSIX_REALTIME_SIGNALS              = 200809
  1249  	X_POSIX_REENTRANT_FUNCTIONS           = 1
  1250  	X_POSIX_REGEXP                        = 1
  1251  	X_POSIX_RE_DUP_MAX                    = 255
  1252  	X_POSIX_RTSIG_MAX                     = 8
  1253  	X_POSIX_SAVED_IDS                     = 1
  1254  	X_POSIX_SEMAPHORES                    = 200809
  1255  	X_POSIX_SEM_NSEMS_MAX                 = 256
  1256  	X_POSIX_SEM_VALUE_MAX                 = 32767
  1257  	X_POSIX_SHARED_MEMORY_OBJECTS         = 200809
  1258  	X_POSIX_SHELL                         = 1
  1259  	X_POSIX_SIGQUEUE_MAX                  = 32
  1260  	X_POSIX_SPAWN                         = 200809
  1261  	X_POSIX_SPIN_LOCKS                    = 200809
  1262  	X_POSIX_SPORADIC_SERVER               = -1
  1263  	X_POSIX_SSIZE_MAX                     = 32767
  1264  	X_POSIX_STREAM_MAX                    = 8
  1265  	X_POSIX_SYMLINK_MAX                   = 255
  1266  	X_POSIX_SYMLOOP_MAX                   = 8
  1267  	X_POSIX_SYNCHRONIZED_IO               = 200809
  1268  	X_POSIX_THREADS                       = 200809
  1269  	X_POSIX_THREAD_ATTR_STACKADDR         = 200809
  1270  	X_POSIX_THREAD_ATTR_STACKSIZE         = 200809
  1271  	X_POSIX_THREAD_CPUTIME                = 0
  1272  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS  = 4
  1273  	X_POSIX_THREAD_KEYS_MAX               = 128
  1274  	X_POSIX_THREAD_PRIORITY_SCHEDULING    = 200809
  1275  	X_POSIX_THREAD_PRIO_INHERIT           = 200809
  1276  	X_POSIX_THREAD_PRIO_PROTECT           = 200809
  1277  	X_POSIX_THREAD_PROCESS_SHARED         = 200809
  1278  	X_POSIX_THREAD_ROBUST_PRIO_INHERIT    = 200809
  1279  	X_POSIX_THREAD_ROBUST_PRIO_PROTECT    = -1
  1280  	X_POSIX_THREAD_SAFE_FUNCTIONS         = 200809
  1281  	X_POSIX_THREAD_SPORADIC_SERVER        = -1
  1282  	X_POSIX_THREAD_THREADS_MAX            = 64
  1283  	X_POSIX_TIMEOUTS                      = 200809
  1284  	X_POSIX_TIMERS                        = 200809
  1285  	X_POSIX_TIMER_MAX                     = 32
  1286  	X_POSIX_TRACE                         = -1
  1287  	X_POSIX_TRACE_EVENT_FILTER            = -1
  1288  	X_POSIX_TRACE_INHERIT                 = -1
  1289  	X_POSIX_TRACE_LOG                     = -1
  1290  	X_POSIX_TTY_NAME_MAX                  = 9
  1291  	X_POSIX_TYPED_MEMORY_OBJECTS          = -1
  1292  	X_POSIX_TZNAME_MAX                    = 6
  1293  	X_POSIX_V6_ILP32_OFF32                = -1
  1294  	X_POSIX_V6_ILP32_OFFBIG               = -1
  1295  	X_POSIX_V6_LP64_OFF64                 = 1
  1296  	X_POSIX_V6_LPBIG_OFFBIG               = -1
  1297  	X_POSIX_V7_ILP32_OFF32                = -1
  1298  	X_POSIX_V7_ILP32_OFFBIG               = -1
  1299  	X_POSIX_V7_LP64_OFF64                 = 1
  1300  	X_POSIX_V7_LPBIG_OFFBIG               = -1
  1301  	X_POSIX_VDISABLE                      = 0
  1302  	X_POSIX_VERSION                       = 200809
  1303  	X_STATBUF_ST_BLKSIZE                  = 0
  1304  	X_STATBUF_ST_NSEC                     = 0
  1305  	X_STATBUF_ST_RDEV                     = 0
  1306  	X_STAT_VER                            = 0
  1307  	X_STAT_VER_KERNEL                     = 0
  1308  	X_STAT_VER_LINUX                      = 0
  1309  	X_SYS_STAT_H                          = 1
  1310  	X_SYS_TIME_H                          = 1
  1311  	X_TIME_H                              = 1
  1312  	X_UNISTD_H                            = 1
  1313  	X_UTIME_H                             = 1
  1314  	X_XBS5_ILP32_OFF32                    = -1
  1315  	X_XBS5_ILP32_OFFBIG                   = -1
  1316  	X_XBS5_LP64_OFF64                     = 1
  1317  	X_XBS5_LPBIG_OFFBIG                   = -1
  1318  	X_XOPEN_ENH_I18N                      = 1
  1319  	X_XOPEN_LEGACY                        = 1
  1320  	X_XOPEN_REALTIME                      = 1
  1321  	X_XOPEN_REALTIME_THREADS              = 1
  1322  	X_XOPEN_SHM                           = 1
  1323  	X_XOPEN_UNIX                          = 1
  1324  	X_XOPEN_VERSION                       = 700
  1325  	X_XOPEN_XCU_VERSION                   = 4
  1326  	X_XOPEN_XPG2                          = 1
  1327  	X_XOPEN_XPG3                          = 1
  1328  	X_XOPEN_XPG4                          = 1
  1329  	FUZZER_HASH                           = 4001
  1330  	FUZZER_MX_COST                        = 1000
  1331  	FUZZER_MX_LENGTH                      = 50
  1332  	FUZZER_MX_OUTPUT_LENGTH               = 100
  1333  	FUZZER_MX_RULEID                      = 2147483647
  1334  	FUZZER_NQUEUE                         = 20
  1335  	CC_AND                                = 24
  1336  	CC_BANG                               = 15
  1337  	CC_COMMA                              = 23
  1338  	CC_DIGIT                              = 3
  1339  	CC_DOLLAR                             = 4
  1340  	CC_DOT                                = 26
  1341  	CC_EQ                                 = 14
  1342  	CC_GT                                 = 13
  1343  	CC_ID                                 = 2
  1344  	CC_ILLEGAL                            = 27
  1345  	CC_KYWD                               = 1
  1346  	CC_LP                                 = 17
  1347  	CC_LT                                 = 12
  1348  	CC_MINUS                              = 11
  1349  	CC_PERCENT                            = 22
  1350  	CC_PIPE                               = 10
  1351  	CC_PLUS                               = 20
  1352  	CC_QUOTE                              = 8
  1353  	CC_QUOTE2                             = 9
  1354  	CC_RP                                 = 18
  1355  	CC_SEMI                               = 19
  1356  	CC_SLASH                              = 16
  1357  	CC_SPACE                              = 7
  1358  	CC_STAR                               = 21
  1359  	CC_TILDA                              = 25
  1360  	CC_VARALPHA                           = 5
  1361  	CC_VARNUM                             = 6
  1362  	CC_X                                  = 0
  1363  	TK_BITAND                             = 3
  1364  	TK_BITNOT                             = 3
  1365  	TK_BITOR                              = 3
  1366  	TK_BLOB                               = 2
  1367  	TK_COMMA                              = 3
  1368  	TK_CONCAT                             = 3
  1369  	TK_DOT                                = 3
  1370  	TK_EQ                                 = 3
  1371  	TK_ERROR                              = 4
  1372  	TK_FLOAT                              = 2
  1373  	TK_GE                                 = 3
  1374  	TK_GT                                 = 3
  1375  	TK_ID                                 = 1
  1376  	TK_ILLEGAL                            = 4
  1377  	TK_INTEGER                            = 2
  1378  	TK_LE                                 = 3
  1379  	TK_LITERAL                            = 2
  1380  	TK_LP                                 = 3
  1381  	TK_LSHIFT                             = 3
  1382  	TK_LT                                 = 3
  1383  	TK_MINUS                              = 3
  1384  	TK_NAME                               = 1
  1385  	TK_NE                                 = 3
  1386  	TK_PLUS                               = 3
  1387  	TK_PUNCT                              = 3
  1388  	TK_REM                                = 3
  1389  	TK_RP                                 = 3
  1390  	TK_RSHIFT                             = 3
  1391  	TK_SEMI                               = 3
  1392  	TK_SLASH                              = 3
  1393  	TK_SPACE                              = 0
  1394  	TK_STAR                               = 3
  1395  	TK_STRING                             = 2
  1396  	TK_VARIABLE                           = 2
  1397  	Deliberate_fall_through               = 0
  1398  	QPVTAB_A                              = 6
  1399  	QPVTAB_B                              = 7
  1400  	QPVTAB_C                              = 8
  1401  	QPVTAB_CN                             = 2
  1402  	QPVTAB_D                              = 9
  1403  	QPVTAB_E                              = 10
  1404  	QPVTAB_FLAGS                          = 11
  1405  	QPVTAB_IX                             = 1
  1406  	QPVTAB_NONE                           = 12
  1407  	QPVTAB_OP                             = 3
  1408  	QPVTAB_RHS                            = 5
  1409  	QPVTAB_UX                             = 4
  1410  	QPVTAB_VN                             = 0
  1411  	RE_EOF                                = 0
  1412  	RE_OP_ACCEPT                          = 6
  1413  	RE_OP_ANY                             = 2
  1414  	RE_OP_ANYSTAR                         = 3
  1415  	RE_OP_BOUNDARY                        = 17
  1416  	RE_OP_CC_EXC                          = 8
  1417  	RE_OP_CC_INC                          = 7
  1418  	RE_OP_CC_RANGE                        = 10
  1419  	RE_OP_CC_VALUE                        = 9
  1420  	RE_OP_DIGIT                           = 13
  1421  	RE_OP_FORK                            = 4
  1422  	RE_OP_GOTO                            = 5
  1423  	RE_OP_MATCH                           = 1
  1424  	RE_OP_NOTDIGIT                        = 14
  1425  	RE_OP_NOTSPACE                        = 16
  1426  	RE_OP_NOTWORD                         = 12
  1427  	RE_OP_SPACE                           = 15
  1428  	RE_OP_WORD                            = 11
  1429  	SERIES_COLUMN_START                   = 1
  1430  	SERIES_COLUMN_STEP                    = 3
  1431  	SERIES_COLUMN_STOP                    = 2
  1432  	SERIES_COLUMN_VALUE                   = 0
  1433  	CCLASS_B                              = 2
  1434  	CCLASS_C                              = 3
  1435  	CCLASS_D                              = 4
  1436  	CCLASS_DIGIT                          = 10
  1437  	CCLASS_H                              = 5
  1438  	CCLASS_L                              = 6
  1439  	CCLASS_M                              = 8
  1440  	CCLASS_OTHER                          = 12
  1441  	CCLASS_R                              = 7
  1442  	CCLASS_SILENT                         = 0
  1443  	CCLASS_SPACE                          = 11
  1444  	CCLASS_VOWEL                          = 1
  1445  	CCLASS_Y                              = 9
  1446  	FINAL_INS_COST_DIV                    = 4
  1447  	SCRIPT_ARABIC                         = 0x0010
  1448  	SCRIPT_CYRILLIC                       = 0x0002
  1449  	SCRIPT_GREEK                          = 0x0004
  1450  	SCRIPT_HEBREW                         = 0x0008
  1451  	SCRIPT_LATIN                          = 0x0001
  1452  	SPELLFIX_COL_COMMAND                  = 11
  1453  	SPELLFIX_COL_DISTANCE                 = 2
  1454  	SPELLFIX_COL_LANGID                   = 3
  1455  	SPELLFIX_COL_MATCHLEN                 = 5
  1456  	SPELLFIX_COL_PHONEHASH                = 6
  1457  	SPELLFIX_COL_RANK                     = 1
  1458  	SPELLFIX_COL_SCOPE                    = 8
  1459  	SPELLFIX_COL_SCORE                    = 4
  1460  	SPELLFIX_COL_SOUNDSLIKE               = 10
  1461  	SPELLFIX_COL_SRCHCNT                  = 9
  1462  	SPELLFIX_COL_TOP                      = 7
  1463  	SPELLFIX_COL_WORD                     = 0
  1464  	SPELLFIX_IDXNUM_DIST                  = 48
  1465  	SPELLFIX_IDXNUM_DISTLE                = 0x20
  1466  	SPELLFIX_IDXNUM_DISTLT                = 0x10
  1467  	SPELLFIX_IDXNUM_LANGID                = 0x02
  1468  	SPELLFIX_IDXNUM_MATCH                 = 0x01
  1469  	SPELLFIX_IDXNUM_ROWID                 = 0x40
  1470  	SPELLFIX_IDXNUM_SCOPE                 = 0x08
  1471  	SPELLFIX_IDXNUM_TOP                   = 0x04
  1472  	SPELLFIX_MX_HASH                      = 32
  1473  	SPELLFIX_MX_RUN                       = 1
  1474  	SQLITE_SPELLFIX_STACKALLOC_SZ         = 1024
  1475  	SWARMVTAB_MAX_OPEN                    = 9
  1476  	SQLITE_RBU_STATE_CHECKPOINT           = 3
  1477  	SQLITE_RBU_STATE_DONE                 = 4
  1478  	SQLITE_RBU_STATE_ERROR                = 5
  1479  	SQLITE_RBU_STATE_MOVE                 = 2
  1480  	SQLITE_RBU_STATE_OAL                  = 1
  1481  	X_SQLITE3RBU_H                        = 0
  1482  	BTREE_APPEND                          = 0x08
  1483  	BTREE_APPLICATION_ID                  = 8
  1484  	BTREE_AUTOVACUUM_FULL                 = 1
  1485  	BTREE_AUTOVACUUM_INCR                 = 2
  1486  	BTREE_AUTOVACUUM_NONE                 = 0
  1487  	BTREE_AUXDELETE                       = 0x04
  1488  	BTREE_BLOBKEY                         = 2
  1489  	BTREE_BULKLOAD                        = 0x00000001
  1490  	BTREE_DATA_VERSION                    = 15
  1491  	BTREE_DEFAULT_CACHE_SIZE              = 3
  1492  	BTREE_FILE_FORMAT                     = 2
  1493  	BTREE_FORDELETE                       = 0x00000008
  1494  	BTREE_FREE_PAGE_COUNT                 = 0
  1495  	BTREE_HINT_RANGE                      = 0
  1496  	BTREE_INCR_VACUUM                     = 7
  1497  	BTREE_INTKEY                          = 1
  1498  	BTREE_LARGEST_ROOT_PAGE               = 4
  1499  	BTREE_MEMORY                          = 2
  1500  	BTREE_OMIT_JOURNAL                    = 1
  1501  	BTREE_PREFORMAT                       = 0x80
  1502  	BTREE_SAVEPOSITION                    = 0x02
  1503  	BTREE_SCHEMA_VERSION                  = 1
  1504  	BTREE_SEEK_EQ                         = 0x00000002
  1505  	BTREE_SINGLE                          = 4
  1506  	BTREE_TEXT_ENCODING                   = 5
  1507  	BTREE_UNORDERED                       = 8
  1508  	BTREE_USER_VERSION                    = 6
  1509  	BTREE_WRCSR                           = 0x00000004
  1510  	COLFLAG_BUSY                          = 0x0100
  1511  	COLFLAG_GENERATED                     = 0x0060
  1512  	COLFLAG_HASCOLL                       = 0x0200
  1513  	COLFLAG_HASTYPE                       = 0x0004
  1514  	COLFLAG_HIDDEN                        = 0x0002
  1515  	COLFLAG_NOEXPAND                      = 0x0400
  1516  	COLFLAG_NOINSERT                      = 0x0062
  1517  	COLFLAG_NOTAVAIL                      = 0x0080
  1518  	COLFLAG_PRIMKEY                       = 0x0001
  1519  	COLFLAG_SORTERREF                     = 0x0010
  1520  	COLFLAG_STORED                        = 0x0040
  1521  	COLFLAG_UNIQUE                        = 0x0008
  1522  	COLFLAG_VIRTUAL                       = 0x0020
  1523  	COLNAME_COLUMN                        = 4
  1524  	COLNAME_DATABASE                      = 2
  1525  	COLNAME_DECLTYPE                      = 1
  1526  	COLNAME_N                             = 5
  1527  	COLNAME_NAME                          = 0
  1528  	COLNAME_TABLE                         = 3
  1529  	COLTYPE_ANY                           = 1
  1530  	COLTYPE_BLOB                          = 2
  1531  	COLTYPE_CUSTOM                        = 0
  1532  	COLTYPE_INT                           = 3
  1533  	COLTYPE_INTEGER                       = 4
  1534  	COLTYPE_REAL                          = 5
  1535  	COLTYPE_TEXT                          = 6
  1536  	DBFLAG_EncodingFixed                  = 0x0040
  1537  	DBFLAG_InternalFunc                   = 0x0020
  1538  	DBFLAG_PreferBuiltin                  = 0x0002
  1539  	DBFLAG_SchemaChange                   = 0x0001
  1540  	DBFLAG_SchemaKnownOk                  = 0x0010
  1541  	DBFLAG_Vacuum                         = 0x0004
  1542  	DBFLAG_VacuumInto                     = 0x0008
  1543  	DB_ResetWanted                        = 0x0008
  1544  	DB_SchemaLoaded                       = 0x0001
  1545  	DB_UnresetViews                       = 0x0002
  1546  	ENAME_NAME                            = 0
  1547  	ENAME_SPAN                            = 1
  1548  	ENAME_TAB                             = 2
  1549  	EP_Agg                                = 0x000010
  1550  	EP_CanBeNull                          = 0x200000
  1551  	EP_Collate                            = 0x000200
  1552  	EP_Commuted                           = 0x000400
  1553  	EP_ConstFunc                          = 0x100000
  1554  	EP_DblQuoted                          = 0x000080
  1555  	EP_Distinct                           = 0x000004
  1556  	EP_FixedCol                           = 0x000020
  1557  	EP_FromDDL                            = 0x40000000
  1558  	EP_HasFunc                            = 0x000008
  1559  	EP_IfNullRow                          = 0x040000
  1560  	EP_Immutable                          = 0x02
  1561  	EP_InfixFunc                          = 0x000100
  1562  	EP_InnerON                            = 0x000002
  1563  	EP_IntValue                           = 0x000800
  1564  	EP_IsFalse                            = 0x20000000
  1565  	EP_IsTrue                             = 0x10000000
  1566  	EP_Leaf                               = 0x800000
  1567  	EP_MemToken                           = 0x020000
  1568  	EP_NoReduce                           = 0x01
  1569  	EP_OuterON                            = 0x000001
  1570  	EP_Propagate                          = 4194824
  1571  	EP_Quoted                             = 0x4000000
  1572  	EP_Reduced                            = 0x004000
  1573  	EP_Skip                               = 0x002000
  1574  	EP_Static                             = 0x8000000
  1575  	EP_Subquery                           = 0x400000
  1576  	EP_Subrtn                             = 0x2000000
  1577  	EP_TokenOnly                          = 0x010000
  1578  	EP_Unlikely                           = 0x080000
  1579  	EP_VarSelect                          = 0x000040
  1580  	EP_Win                                = 0x008000
  1581  	EP_WinFunc                            = 0x1000000
  1582  	EP_xIsSelect                          = 0x001000
  1583  	EU4_EXPR                              = 2
  1584  	EU4_IDX                               = 1
  1585  	EU4_NONE                              = 0
  1586  	EXCLUSIVE_LOCK                        = 4
  1587  	EXPRDUP_REDUCE                        = 0x0001
  1588  	GCC_VERSION                           = 10002001
  1589  	HAVE_DLFCN_H                          = 1
  1590  	HAVE_FCHOWN                           = 1
  1591  	HAVE_FDATASYNC                        = 1
  1592  	HAVE_GMTIME_R                         = 1
  1593  	HAVE_INT16_T                          = 1
  1594  	HAVE_INT32_T                          = 1
  1595  	HAVE_INT64_T                          = 1
  1596  	HAVE_INT8_T                           = 1
  1597  	HAVE_INTPTR_T                         = 1
  1598  	HAVE_INTTYPES_H                       = 1
  1599  	HAVE_ISNAN                            = 1
  1600  	HAVE_LOCALTIME_R                      = 1
  1601  	HAVE_LSTAT                            = 1
  1602  	HAVE_MALLOC_H                         = 1
  1603  	HAVE_MALLOC_USABLE_SIZE               = 1
  1604  	HAVE_MEMORY_H                         = 1
  1605  	HAVE_PREAD                            = 1
  1606  	HAVE_PREAD64                          = 1
  1607  	HAVE_PWRITE                           = 1
  1608  	HAVE_PWRITE64                         = 1
  1609  	HAVE_READLINK                         = 1
  1610  	HAVE_STDINT_H                         = 1
  1611  	HAVE_STDLIB_H                         = 1
  1612  	HAVE_STRCHRNUL                        = 1
  1613  	HAVE_STRINGS_H                        = 1
  1614  	HAVE_STRING_H                         = 1
  1615  	HAVE_SYS_STAT_H                       = 1
  1616  	HAVE_SYS_TYPES_H                      = 1
  1617  	HAVE_UINT16_T                         = 1
  1618  	HAVE_UINT32_T                         = 1
  1619  	HAVE_UINT64_T                         = 1
  1620  	HAVE_UINT8_T                          = 1
  1621  	HAVE_UINTPTR_T                        = 1
  1622  	HAVE_UNISTD_H                         = 1
  1623  	HAVE_UTIME                            = 1
  1624  	INITFLAG_AlterAdd                     = 0x0003
  1625  	INITFLAG_AlterDrop                    = 0x0002
  1626  	INITFLAG_AlterMask                    = 0x0003
  1627  	INITFLAG_AlterRename                  = 0x0001
  1628  	INLINEFUNC_affinity                   = 4
  1629  	INLINEFUNC_coalesce                   = 0
  1630  	INLINEFUNC_expr_compare               = 3
  1631  	INLINEFUNC_expr_implies_expr          = 2
  1632  	INLINEFUNC_iif                        = 5
  1633  	INLINEFUNC_implies_nonnull_row        = 1
  1634  	INLINEFUNC_sqlite_offset              = 6
  1635  	INLINEFUNC_unlikely                   = 99
  1636  	INT16_MAX                             = 32767
  1637  	INT16_MIN                             = -32768
  1638  	INT32_MAX                             = 2147483647
  1639  	INT32_MIN                             = -2147483648
  1640  	INT64_MAX                             = 9223372036854775807
  1641  	INT64_MIN                             = -9223372036854775808
  1642  	INT8_MAX                              = 127
  1643  	INT8_MIN                              = -128
  1644  	INTMAX_MAX                            = 9223372036854775807
  1645  	INTMAX_MIN                            = -9223372036854775808
  1646  	INTPTR_MAX                            = 9223372036854775807
  1647  	INTPTR_MIN                            = -9223372036854775808
  1648  	INT_FAST16_MAX                        = 9223372036854775807
  1649  	INT_FAST16_MIN                        = -9223372036854775808
  1650  	INT_FAST32_MAX                        = 9223372036854775807
  1651  	INT_FAST32_MIN                        = -9223372036854775808
  1652  	INT_FAST64_MAX                        = 9223372036854775807
  1653  	INT_FAST64_MIN                        = -9223372036854775808
  1654  	INT_FAST8_MAX                         = 127
  1655  	INT_FAST8_MIN                         = -128
  1656  	INT_LEAST16_MAX                       = 32767
  1657  	INT_LEAST16_MIN                       = -32768
  1658  	INT_LEAST32_MAX                       = 2147483647
  1659  	INT_LEAST32_MIN                       = -2147483648
  1660  	INT_LEAST64_MAX                       = 9223372036854775807
  1661  	INT_LEAST64_MIN                       = -9223372036854775808
  1662  	INT_LEAST8_MAX                        = 127
  1663  	INT_LEAST8_MIN                        = -128
  1664  	IN_INDEX_EPH                          = 2
  1665  	IN_INDEX_INDEX_ASC                    = 3
  1666  	IN_INDEX_INDEX_DESC                   = 4
  1667  	IN_INDEX_LOOP                         = 0x0004
  1668  	IN_INDEX_MEMBERSHIP                   = 0x0002
  1669  	IN_INDEX_NOOP                         = 5
  1670  	IN_INDEX_NOOP_OK                      = 0x0001
  1671  	IN_INDEX_ROWID                        = 1
  1672  	JT_CROSS                              = 0x02
  1673  	JT_ERROR                              = 0x80
  1674  	JT_INNER                              = 0x01
  1675  	JT_LEFT                               = 0x08
  1676  	JT_LTORJ                              = 0x40
  1677  	JT_NATURAL                            = 0x04
  1678  	JT_OUTER                              = 0x20
  1679  	JT_RIGHT                              = 0x10
  1680  	KEYINFO_ORDER_BIGNULL                 = 0x02
  1681  	KEYINFO_ORDER_DESC                    = 0x01
  1682  	LEGACY_SCHEMA_TABLE                   = "sqlite_master"
  1683  	LEGACY_TEMP_SCHEMA_TABLE              = "sqlite_temp_master"
  1684  	LOCATE_NOERR                          = 0x02
  1685  	LOCATE_VIEW                           = 0x01
  1686  	LOOKASIDE_SMALL                       = 128
  1687  	LT_OBJDIR                             = ".libs/"
  1688  	M10d_Any                              = 1
  1689  	M10d_No                               = 2
  1690  	M10d_Yes                              = 0
  1691  	MEMTYPE_HEAP                          = 0x01
  1692  	MEMTYPE_LOOKASIDE                     = 0x02
  1693  	MEMTYPE_PCACHE                        = 0x04
  1694  	MSVC_VERSION                          = 0
  1695  	NC_AllowAgg                           = 0x000001
  1696  	NC_AllowWin                           = 0x004000
  1697  	NC_Complex                            = 0x002000
  1698  	NC_FromDDL                            = 0x040000
  1699  	NC_GenCol                             = 0x000008
  1700  	NC_HasAgg                             = 0x000010
  1701  	NC_HasWin                             = 0x008000
  1702  	NC_IdxExpr                            = 0x000020
  1703  	NC_InAggFunc                          = 0x020000
  1704  	NC_IsCheck                            = 0x000004
  1705  	NC_IsDDL                              = 0x010000
  1706  	NC_MinMaxAgg                          = 0x001000
  1707  	NC_NoSelect                           = 0x080000
  1708  	NC_OrderAgg                           = 0x8000000
  1709  	NC_PartIdx                            = 0x000002
  1710  	NC_SelfRef                            = 0x00002e
  1711  	NC_UAggInfo                           = 0x000100
  1712  	NC_UBaseReg                           = 0x000400
  1713  	NC_UEList                             = 0x000080
  1714  	NC_UUpsert                            = 0x000200
  1715  	NC_VarSelect                          = 0x000040
  1716  	NO_LOCK                               = 0
  1717  	OE_Abort                              = 2
  1718  	OE_Cascade                            = 10
  1719  	OE_Default                            = 11
  1720  	OE_Fail                               = 3
  1721  	OE_Ignore                             = 4
  1722  	OE_None                               = 0
  1723  	OE_Replace                            = 5
  1724  	OE_Restrict                           = 7
  1725  	OE_Rollback                           = 1
  1726  	OE_SetDflt                            = 9
  1727  	OE_SetNull                            = 8
  1728  	OE_Update                             = 6
  1729  	OMIT_TEMPDB                           = 0
  1730  	ONEPASS_MULTI                         = 2
  1731  	ONEPASS_OFF                           = 0
  1732  	ONEPASS_SINGLE                        = 1
  1733  	OPFLAG_APPEND                         = 0x08
  1734  	OPFLAG_AUXDELETE                      = 0x04
  1735  	OPFLAG_BULKCSR                        = 0x01
  1736  	OPFLAG_EPHEM                          = 0x01
  1737  	OPFLAG_FORDELETE                      = 0x08
  1738  	OPFLAG_ISNOOP                         = 0x40
  1739  	OPFLAG_ISUPDATE                       = 0x04
  1740  	OPFLAG_LASTROWID                      = 0x20
  1741  	OPFLAG_LENGTHARG                      = 0x40
  1742  	OPFLAG_NCHANGE                        = 0x01
  1743  	OPFLAG_NOCHNG                         = 0x01
  1744  	OPFLAG_NOCHNG_MAGIC                   = 0x6d
  1745  	OPFLAG_P2ISREG                        = 0x10
  1746  	OPFLAG_PERMUTE                        = 0x01
  1747  	OPFLAG_PREFORMAT                      = 0x80
  1748  	OPFLAG_SAVEPOSITION                   = 0x02
  1749  	OPFLAG_SEEKEQ                         = 0x02
  1750  	OPFLAG_TYPEOFARG                      = 0x80
  1751  	OPFLAG_USESEEKRESULT                  = 0x10
  1752  	OPFLG_IN1                             = 0x02
  1753  	OPFLG_IN2                             = 0x04
  1754  	OPFLG_IN3                             = 0x08
  1755  	OPFLG_JUMP                            = 0x01
  1756  	OPFLG_OUT2                            = 0x10
  1757  	OPFLG_OUT3                            = 0x20
  1758  	OP_Abortable                          = 186
  1759  	OP_Add                                = 106
  1760  	OP_AddImm                             = 86
  1761  	OP_Affinity                           = 96
  1762  	OP_AggFinal                           = 165
  1763  	OP_AggInverse                         = 161
  1764  	OP_AggStep                            = 162
  1765  	OP_AggStep1                           = 163
  1766  	OP_AggValue                           = 164
  1767  	OP_And                                = 44
  1768  	OP_AutoCommit                         = 1
  1769  	OP_BeginSubrtn                        = 74
  1770  	OP_BitAnd                             = 102
  1771  	OP_BitNot                             = 114
  1772  	OP_BitOr                              = 103
  1773  	OP_Blob                               = 77
  1774  	OP_Cast                               = 88
  1775  	OP_Checkpoint                         = 3
  1776  	OP_Clear                              = 145
  1777  	OP_Close                              = 122
  1778  	OP_ClrSubtype                         = 179
  1779  	OP_CollSeq                            = 85
  1780  	OP_Column                             = 94
  1781  	OP_ColumnsUsed                        = 123
  1782  	OP_Compare                            = 90
  1783  	OP_Concat                             = 111
  1784  	OP_Copy                               = 80
  1785  	OP_Count                              = 98
  1786  	OP_CreateBtree                        = 147
  1787  	OP_CursorHint                         = 182
  1788  	OP_CursorLock                         = 167
  1789  	OP_CursorUnlock                       = 168
  1790  	OP_DecrJumpZero                       = 60
  1791  	OP_DeferredSeek                       = 141
  1792  	OP_Delete                             = 130
  1793  	OP_Destroy                            = 144
  1794  	OP_Divide                             = 109
  1795  	OP_DropIndex                          = 152
  1796  	OP_DropTable                          = 151
  1797  	OP_DropTrigger                        = 154
  1798  	OP_ElseEq                             = 58
  1799  	OP_EndCoroutine                       = 68
  1800  	OP_Eq                                 = 53
  1801  	OP_Expire                             = 166
  1802  	OP_Explain                            = 185
  1803  	OP_Filter                             = 63
  1804  	OP_FilterAdd                          = 180
  1805  	OP_FinishSeek                         = 143
  1806  	OP_FkCheck                            = 83
  1807  	OP_FkCounter                          = 158
  1808  	OP_FkIfZero                           = 48
  1809  	OP_Found                              = 28
  1810  	OP_Function                           = 66
  1811  	OP_Ge                                 = 57
  1812  	OP_Gosub                              = 9
  1813  	OP_Goto                               = 8
  1814  	OP_Gt                                 = 54
  1815  	OP_Halt                               = 70
  1816  	OP_HaltIfNull                         = 69
  1817  	OP_IdxDelete                          = 140
  1818  	OP_IdxGE                              = 42
  1819  	OP_IdxGT                              = 40
  1820  	OP_IdxInsert                          = 138
  1821  	OP_IdxLE                              = 39
  1822  	OP_IdxLT                              = 41
  1823  	OP_IdxRowid                           = 142
  1824  	OP_If                                 = 15
  1825  	OP_IfNoHope                           = 25
  1826  	OP_IfNot                              = 16
  1827  	OP_IfNotOpen                          = 24
  1828  	OP_IfNotZero                          = 59
  1829  	OP_IfNullRow                          = 18
  1830  	OP_IfPos                              = 49
  1831  	OP_IfSmaller                          = 32
  1832  	OP_IncrVacuum                         = 61
  1833  	OP_Init                               = 64
  1834  	OP_InitCoroutine                      = 10
  1835  	OP_Insert                             = 128
  1836  	OP_Int64                              = 72
  1837  	OP_IntCopy                            = 82
  1838  	OP_Integer                            = 71
  1839  	OP_IntegrityCk                        = 155
  1840  	OP_IsNull                             = 50
  1841  	OP_IsNullOrType                       = 17
  1842  	OP_IsTrue                             = 91
  1843  	OP_JournalMode                        = 4
  1844  	OP_Jump                               = 13
  1845  	OP_Last                               = 31
  1846  	OP_Le                                 = 55
  1847  	OP_LoadAnalysis                       = 150
  1848  	OP_Lt                                 = 56
  1849  	OP_MakeRecord                         = 97
  1850  	OP_MaxPgcnt                           = 178
  1851  	OP_MemMax                             = 159
  1852  	OP_Move                               = 79
  1853  	OP_Multiply                           = 108
  1854  	OP_MustBeInt                          = 12
  1855  	OP_Ne                                 = 52
  1856  	OP_NewRowid                           = 127
  1857  	OP_Next                               = 38
  1858  	OP_NoConflict                         = 26
  1859  	OP_Noop                               = 184
  1860  	OP_Not                                = 19
  1861  	OP_NotExists                          = 30
  1862  	OP_NotFound                           = 27
  1863  	OP_NotNull                            = 51
  1864  	OP_Null                               = 75
  1865  	OP_NullRow                            = 136
  1866  	OP_Offset                             = 93
  1867  	OP_OffsetLimit                        = 160
  1868  	OP_Once                               = 14
  1869  	OP_OpenAutoindex                      = 116
  1870  	OP_OpenDup                            = 115
  1871  	OP_OpenEphemeral                      = 118
  1872  	OP_OpenPseudo                         = 121
  1873  	OP_OpenRead                           = 112
  1874  	OP_OpenWrite                          = 113
  1875  	OP_Or                                 = 43
  1876  	OP_Pagecount                          = 177
  1877  	OP_Param                              = 157
  1878  	OP_ParseSchema                        = 149
  1879  	OP_Permutation                        = 89
  1880  	OP_Prev                               = 37
  1881  	OP_Program                            = 47
  1882  	OP_PureFunc                           = 65
  1883  	OP_ReadCookie                         = 99
  1884  	OP_Real                               = 153
  1885  	OP_RealAffinity                       = 87
  1886  	OP_ReleaseReg                         = 183
  1887  	OP_Remainder                          = 110
  1888  	OP_ReopenIdx                          = 101
  1889  	OP_ResetCount                         = 131
  1890  	OP_ResetSorter                        = 146
  1891  	OP_ResultRow                          = 84
  1892  	OP_Return                             = 67
  1893  	OP_Rewind                             = 35
  1894  	OP_RowCell                            = 129
  1895  	OP_RowData                            = 134
  1896  	OP_RowSetAdd                          = 156
  1897  	OP_RowSetRead                         = 45
  1898  	OP_RowSetTest                         = 46
  1899  	OP_Rowid                              = 135
  1900  	OP_SCopy                              = 81
  1901  	OP_Savepoint                          = 0
  1902  	OP_SeekEnd                            = 137
  1903  	OP_SeekGE                             = 22
  1904  	OP_SeekGT                             = 23
  1905  	OP_SeekHit                            = 125
  1906  	OP_SeekLE                             = 21
  1907  	OP_SeekLT                             = 20
  1908  	OP_SeekRowid                          = 29
  1909  	OP_SeekScan                           = 124
  1910  	OP_Sequence                           = 126
  1911  	OP_SequenceTest                       = 120
  1912  	OP_SetCookie                          = 100
  1913  	OP_ShiftLeft                          = 104
  1914  	OP_ShiftRight                         = 105
  1915  	OP_SoftNull                           = 76
  1916  	OP_Sort                               = 34
  1917  	OP_SorterCompare                      = 132
  1918  	OP_SorterData                         = 133
  1919  	OP_SorterInsert                       = 139
  1920  	OP_SorterNext                         = 36
  1921  	OP_SorterOpen                         = 119
  1922  	OP_SorterSort                         = 33
  1923  	OP_SqlExec                            = 148
  1924  	OP_String                             = 73
  1925  	OP_String8                            = 117
  1926  	OP_Subtract                           = 107
  1927  	OP_TableLock                          = 169
  1928  	OP_Trace                              = 181
  1929  	OP_Transaction                        = 2
  1930  	OP_TypeCheck                          = 95
  1931  	OP_VBegin                             = 170
  1932  	OP_VColumn                            = 175
  1933  	OP_VCreate                            = 171
  1934  	OP_VDestroy                           = 172
  1935  	OP_VFilter                            = 6
  1936  	OP_VInitIn                            = 174
  1937  	OP_VNext                              = 62
  1938  	OP_VOpen                              = 173
  1939  	OP_VRename                            = 176
  1940  	OP_VUpdate                            = 7
  1941  	OP_Vacuum                             = 5
  1942  	OP_Variable                           = 78
  1943  	OP_Yield                              = 11
  1944  	OP_ZeroOrNull                         = 92
  1945  	OS_VXWORKS                            = 0
  1946  	P4_COLLSEQ                            = -2
  1947  	P4_DYNAMIC                            = -6
  1948  	P4_EXPR                               = -9
  1949  	P4_FREE_IF_LE                         = -6
  1950  	P4_FUNCCTX                            = -15
  1951  	P4_FUNCDEF                            = -7
  1952  	P4_INT32                              = -3
  1953  	P4_INT64                              = -13
  1954  	P4_INTARRAY                           = -14
  1955  	P4_KEYINFO                            = -8
  1956  	P4_MEM                                = -10
  1957  	P4_NOTUSED                            = 0
  1958  	P4_REAL                               = -12
  1959  	P4_STATIC                             = -1
  1960  	P4_SUBPROGRAM                         = -4
  1961  	P4_TABLE                              = -5
  1962  	P4_TRANSIENT                          = 0
  1963  	P4_VTAB                               = -11
  1964  	P5_ConstraintCheck                    = 3
  1965  	P5_ConstraintFK                       = 4
  1966  	P5_ConstraintNotNull                  = 1
  1967  	P5_ConstraintUnique                   = 2
  1968  	PACKAGE_BUGREPORT                     = ""
  1969  	PACKAGE_NAME                          = "sqlite"
  1970  	PACKAGE_STRING                        = "sqlite 3.39.3"
  1971  	PACKAGE_TARNAME                       = "sqlite"
  1972  	PACKAGE_VERSION                       = "3.39.3"
  1973  	PAGER_CACHESPILL                      = 0x20
  1974  	PAGER_CKPT_FULLFSYNC                  = 0x10
  1975  	PAGER_FLAGS_MASK                      = 0x38
  1976  	PAGER_FULLFSYNC                       = 0x08
  1977  	PAGER_GET_NOCONTENT                   = 0x01
  1978  	PAGER_GET_READONLY                    = 0x02
  1979  	PAGER_JOURNALMODE_DELETE              = 0
  1980  	PAGER_JOURNALMODE_MEMORY              = 4
  1981  	PAGER_JOURNALMODE_OFF                 = 2
  1982  	PAGER_JOURNALMODE_PERSIST             = 1
  1983  	PAGER_JOURNALMODE_QUERY               = -1
  1984  	PAGER_JOURNALMODE_TRUNCATE            = 3
  1985  	PAGER_JOURNALMODE_WAL                 = 5
  1986  	PAGER_LOCKINGMODE_EXCLUSIVE           = 1
  1987  	PAGER_LOCKINGMODE_NORMAL              = 0
  1988  	PAGER_LOCKINGMODE_QUERY               = -1
  1989  	PAGER_MEMORY                          = 0x0002
  1990  	PAGER_OMIT_JOURNAL                    = 0x0001
  1991  	PAGER_SYNCHRONOUS_EXTRA               = 0x04
  1992  	PAGER_SYNCHRONOUS_FULL                = 0x03
  1993  	PAGER_SYNCHRONOUS_MASK                = 0x07
  1994  	PAGER_SYNCHRONOUS_NORMAL              = 0x02
  1995  	PAGER_SYNCHRONOUS_OFF                 = 0x01
  1996  	PARSE_MODE_DECLARE_VTAB               = 1
  1997  	PARSE_MODE_NORMAL                     = 0
  1998  	PARSE_MODE_RENAME                     = 2
  1999  	PARSE_MODE_UNMAP                      = 3
  2000  	PENDING_LOCK                          = 3
  2001  	PGHDR_CLEAN                           = 0x001
  2002  	PGHDR_DIRTY                           = 0x002
  2003  	PGHDR_DONT_WRITE                      = 0x010
  2004  	PGHDR_MMAP                            = 0x020
  2005  	PGHDR_NEED_SYNC                       = 0x008
  2006  	PGHDR_WAL_APPEND                      = 0x040
  2007  	PGHDR_WRITEABLE                       = 0x004
  2008  	PREFERRED_SCHEMA_TABLE                = "sqlite_schema"
  2009  	PREFERRED_TEMP_SCHEMA_TABLE           = "sqlite_temp_schema"
  2010  	PRIX16                                = "X"
  2011  	PRIX32                                = "X"
  2012  	PRIX8                                 = "X"
  2013  	PRIXFAST8                             = "X"
  2014  	PRIXLEAST16                           = "X"
  2015  	PRIXLEAST32                           = "X"
  2016  	PRIXLEAST8                            = "X"
  2017  	PRId16                                = "d"
  2018  	PRId32                                = "d"
  2019  	PRId8                                 = "d"
  2020  	PRIdFAST8                             = "d"
  2021  	PRIdLEAST16                           = "d"
  2022  	PRIdLEAST32                           = "d"
  2023  	PRIdLEAST8                            = "d"
  2024  	PRIi16                                = "i"
  2025  	PRIi32                                = "i"
  2026  	PRIi8                                 = "i"
  2027  	PRIiFAST8                             = "i"
  2028  	PRIiLEAST16                           = "i"
  2029  	PRIiLEAST32                           = "i"
  2030  	PRIiLEAST8                            = "i"
  2031  	PRIo16                                = "o"
  2032  	PRIo32                                = "o"
  2033  	PRIo8                                 = "o"
  2034  	PRIoFAST8                             = "o"
  2035  	PRIoLEAST16                           = "o"
  2036  	PRIoLEAST32                           = "o"
  2037  	PRIoLEAST8                            = "o"
  2038  	PRIu16                                = "u"
  2039  	PRIu32                                = "u"
  2040  	PRIu8                                 = "u"
  2041  	PRIuFAST8                             = "u"
  2042  	PRIuLEAST16                           = "u"
  2043  	PRIuLEAST32                           = "u"
  2044  	PRIuLEAST8                            = "u"
  2045  	PRIx16                                = "x"
  2046  	PRIx32                                = "x"
  2047  	PRIx8                                 = "x"
  2048  	PRIxFAST8                             = "x"
  2049  	PRIxLEAST16                           = "x"
  2050  	PRIxLEAST32                           = "x"
  2051  	PRIxLEAST8                            = "x"
  2052  	PTRDIFF_MAX                           = 9223372036854775807
  2053  	PTRDIFF_MIN                           = -9223372036854775808
  2054  	RESERVED_LOCK                         = 2
  2055  	SAVEPOINT_BEGIN                       = 0
  2056  	SAVEPOINT_RELEASE                     = 1
  2057  	SAVEPOINT_ROLLBACK                    = 2
  2058  	SCHEMA_ROOT                           = 1
  2059  	SCNd16                                = "hd"
  2060  	SCNd32                                = "d"
  2061  	SCNd8                                 = "hhd"
  2062  	SCNdFAST8                             = "hhd"
  2063  	SCNdLEAST16                           = "hd"
  2064  	SCNdLEAST32                           = "d"
  2065  	SCNdLEAST8                            = "hhd"
  2066  	SCNi16                                = "hi"
  2067  	SCNi32                                = "i"
  2068  	SCNi8                                 = "hhi"
  2069  	SCNiFAST8                             = "hhi"
  2070  	SCNiLEAST16                           = "hi"
  2071  	SCNiLEAST32                           = "i"
  2072  	SCNiLEAST8                            = "hhi"
  2073  	SCNo16                                = "ho"
  2074  	SCNo32                                = "o"
  2075  	SCNo8                                 = "hho"
  2076  	SCNoFAST8                             = "hho"
  2077  	SCNoLEAST16                           = "ho"
  2078  	SCNoLEAST32                           = "o"
  2079  	SCNoLEAST8                            = "hho"
  2080  	SCNu16                                = "hu"
  2081  	SCNu32                                = "u"
  2082  	SCNu8                                 = "hhu"
  2083  	SCNuFAST8                             = "hhu"
  2084  	SCNuLEAST16                           = "hu"
  2085  	SCNuLEAST32                           = "u"
  2086  	SCNuLEAST8                            = "hhu"
  2087  	SCNx16                                = "hx"
  2088  	SCNx32                                = "x"
  2089  	SCNx8                                 = "hhx"
  2090  	SCNxFAST8                             = "hhx"
  2091  	SCNxLEAST16                           = "hx"
  2092  	SCNxLEAST32                           = "x"
  2093  	SCNxLEAST8                            = "hhx"
  2094  	SF_Aggregate                          = 0x0000008
  2095  	SF_All                                = 0x0000002
  2096  	SF_ComplexResult                      = 0x0040000
  2097  	SF_Compound                           = 0x0000100
  2098  	SF_Converted                          = 0x0010000
  2099  	SF_CopyCte                            = 0x4000000
  2100  	SF_Distinct                           = 0x0000001
  2101  	SF_Expanded                           = 0x0000040
  2102  	SF_FixedLimit                         = 0x0004000
  2103  	SF_HasAgg                             = 0x0000010
  2104  	SF_HasTypeInfo                        = 0x0000080
  2105  	SF_IncludeHidden                      = 0x0020000
  2106  	SF_MaybeConvert                       = 0x0008000
  2107  	SF_MinMaxAgg                          = 0x0001000
  2108  	SF_MultiPart                          = 0x2000000
  2109  	SF_MultiValue                         = 0x0000400
  2110  	SF_NestedFrom                         = 0x0000800
  2111  	SF_NoopOrderBy                        = 0x0400000
  2112  	SF_OrderByReqd                        = 0x8000000
  2113  	SF_PushDown                           = 0x1000000
  2114  	SF_Recursive                          = 0x0002000
  2115  	SF_Resolved                           = 0x0000004
  2116  	SF_UFSrcCheck                         = 0x0800000
  2117  	SF_UsesEphemeral                      = 0x0000020
  2118  	SF_Values                             = 0x0000200
  2119  	SF_View                               = 0x0200000
  2120  	SF_WhereBegin                         = 0x0080000
  2121  	SF_WinRewrite                         = 0x0100000
  2122  	SHARED_LOCK                           = 1
  2123  	SHARED_SIZE                           = 510
  2124  	SIG_ATOMIC_MAX                        = 2147483647
  2125  	SIG_ATOMIC_MIN                        = -2147483648
  2126  	SIZE_MAX                              = 18446744073709551615
  2127  	SQLITECONFIG_H                        = 1
  2128  	SQLITEINT_H                           = 0
  2129  	SQLITE_AFF_BLOB                       = 0x41
  2130  	SQLITE_AFF_INTEGER                    = 0x44
  2131  	SQLITE_AFF_MASK                       = 0x47
  2132  	SQLITE_AFF_NONE                       = 0x40
  2133  	SQLITE_AFF_NUMERIC                    = 0x43
  2134  	SQLITE_AFF_REAL                       = 0x45
  2135  	SQLITE_AFF_TEXT                       = 0x42
  2136  	SQLITE_ASCII                          = 1
  2137  	SQLITE_ATOMIC_INTRINSICS              = 1
  2138  	SQLITE_AllOpts                        = 0xffffffff
  2139  	SQLITE_AutoIndex                      = 0x00008000
  2140  	SQLITE_BIGENDIAN                      = 0
  2141  	SQLITE_BTREE_H                        = 0
  2142  	SQLITE_BYTEORDER                      = 1234
  2143  	SQLITE_BalancedMerge                  = 0x00200000
  2144  	SQLITE_BloomFilter                    = 0x00080000
  2145  	SQLITE_BloomPulldown                  = 0x00100000
  2146  	SQLITE_CacheSpill                     = 0x00000020
  2147  	SQLITE_CellSizeCk                     = 0x00200000
  2148  	SQLITE_CkptFullFSync                  = 0x00000010
  2149  	SQLITE_CountOfView                    = 0x00000200
  2150  	SQLITE_CoverIdxScan                   = 0x00000020
  2151  	SQLITE_CursorHints                    = 0x00000400
  2152  	SQLITE_DEFAULT_AUTOVACUUM             = 0
  2153  	SQLITE_DEFAULT_CACHE_SIZE             = -2000
  2154  	SQLITE_DEFAULT_FILE_FORMAT            = 4
  2155  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT     = -1
  2156  	SQLITE_DEFAULT_MMAP_SIZE              = 0
  2157  	SQLITE_DEFAULT_PCACHE_INITSZ          = 20
  2158  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS     = 0
  2159  	SQLITE_DEFAULT_SECTOR_SIZE            = 4096
  2160  	SQLITE_DEFAULT_SORTERREF_SIZE         = 0x7fffffff
  2161  	SQLITE_DEFAULT_SYNCHRONOUS            = 2
  2162  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT     = 1000
  2163  	SQLITE_DEFAULT_WAL_SYNCHRONOUS        = 2
  2164  	SQLITE_DEFAULT_WORKER_THREADS         = 0
  2165  	SQLITE_Defensive                      = 0x10000000
  2166  	SQLITE_DeferFKs                       = 0x00080000
  2167  	SQLITE_DistinctOpt                    = 0x00000010
  2168  	SQLITE_DqsDDL                         = 0x20000000
  2169  	SQLITE_DqsDML                         = 0x40000000
  2170  	SQLITE_ECEL_DUP                       = 0x01
  2171  	SQLITE_ECEL_FACTOR                    = 0x02
  2172  	SQLITE_ECEL_OMITREF                   = 0x08
  2173  	SQLITE_ECEL_REF                       = 0x04
  2174  	SQLITE_EnableQPSG                     = 0x00800000
  2175  	SQLITE_EnableTrigger                  = 0x00040000
  2176  	SQLITE_EnableView                     = 0x80000000
  2177  	SQLITE_FAULTINJECTOR_COUNT            = 1
  2178  	SQLITE_FAULTINJECTOR_MALLOC           = 0
  2179  	SQLITE_FCNTL_DB_UNCHANGED             = 0xca093fa0
  2180  	SQLITE_FUNC_ANYORDER                  = 0x08000000
  2181  	SQLITE_FUNC_BUILTIN                   = 0x00800000
  2182  	SQLITE_FUNC_CASE                      = 0x0008
  2183  	SQLITE_FUNC_CONSTANT                  = 0x0800
  2184  	SQLITE_FUNC_COUNT                     = 0x0100
  2185  	SQLITE_FUNC_DIRECT                    = 0x00080000
  2186  	SQLITE_FUNC_ENCMASK                   = 0x0003
  2187  	SQLITE_FUNC_EPHEM                     = 0x0010
  2188  	SQLITE_FUNC_HASH_SZ                   = 23
  2189  	SQLITE_FUNC_INLINE                    = 0x00400000
  2190  	SQLITE_FUNC_INTERNAL                  = 0x00040000
  2191  	SQLITE_FUNC_LENGTH                    = 0x0040
  2192  	SQLITE_FUNC_LIKE                      = 0x0004
  2193  	SQLITE_FUNC_MINMAX                    = 0x1000
  2194  	SQLITE_FUNC_NEEDCOLL                  = 0x0020
  2195  	SQLITE_FUNC_SLOCHNG                   = 0x2000
  2196  	SQLITE_FUNC_SUBTYPE                   = 0x00100000
  2197  	SQLITE_FUNC_TEST                      = 0x4000
  2198  	SQLITE_FUNC_TYPEOF                    = 0x0080
  2199  	SQLITE_FUNC_UNLIKELY                  = 0x0400
  2200  	SQLITE_FUNC_UNSAFE                    = 0x00200000
  2201  	SQLITE_FUNC_WINDOW                    = 0x00010000
  2202  	SQLITE_FactorOutConst                 = 0x00000008
  2203  	SQLITE_FlttnUnionAll                  = 0x00800000
  2204  	SQLITE_ForeignKeys                    = 0x00004000
  2205  	SQLITE_Fts3Tokenizer                  = 0x00400000
  2206  	SQLITE_FullColNames                   = 0x00000004
  2207  	SQLITE_FullFSync                      = 0x00000008
  2208  	SQLITE_GroupByOrder                   = 0x00000004
  2209  	SQLITE_HASH_H                         = 0
  2210  	SQLITE_HAVE_C99_MATH_FUNCS            = 1
  2211  	SQLITE_HAVE_OS_TRACE                  = 0
  2212  	SQLITE_IDXTYPE_APPDEF                 = 0
  2213  	SQLITE_IDXTYPE_IPK                    = 3
  2214  	SQLITE_IDXTYPE_PRIMARYKEY             = 2
  2215  	SQLITE_IDXTYPE_UNIQUE                 = 1
  2216  	SQLITE_IOERR_NOMEM_BKPT               = 3082
  2217  	SQLITE_IgnoreChecks                   = 0x00000200
  2218  	SQLITE_JUMPIFNULL                     = 0x10
  2219  	SQLITE_LITTLEENDIAN                   = 1
  2220  	SQLITE_LegacyAlter                    = 0x04000000
  2221  	SQLITE_LegacyFileFmt                  = 0x00000002
  2222  	SQLITE_LoadExtFunc                    = 0x00020000
  2223  	SQLITE_LoadExtension                  = 0x00010000
  2224  	SQLITE_MALLOC_SOFT_LIMIT              = 1024
  2225  	SQLITE_MAX_ATTACHED                   = 10
  2226  	SQLITE_MAX_COLUMN                     = 2000
  2227  	SQLITE_MAX_COMPOUND_SELECT            = 500
  2228  	SQLITE_MAX_DB                         = 12
  2229  	SQLITE_MAX_DEFAULT_PAGE_SIZE          = 8192
  2230  	SQLITE_MAX_EXPR_DEPTH                 = 1000
  2231  	SQLITE_MAX_FILE_FORMAT                = 4
  2232  	SQLITE_MAX_FUNCTION_ARG               = 127
  2233  	SQLITE_MAX_LENGTH                     = 1000000000
  2234  	SQLITE_MAX_LIKE_PATTERN_LENGTH        = 50000
  2235  	SQLITE_MAX_MMAP_SIZE                  = 0x7fff0000
  2236  	SQLITE_MAX_PAGE_COUNT                 = 1073741823
  2237  	SQLITE_MAX_PAGE_SIZE                  = 65536
  2238  	SQLITE_MAX_PATHLEN                    = 4096
  2239  	SQLITE_MAX_SQL_LENGTH                 = 1000000000
  2240  	SQLITE_MAX_SYMLINK                    = 200
  2241  	SQLITE_MAX_TRIGGER_DEPTH              = 1000
  2242  	SQLITE_MAX_VARIABLE_NUMBER            = 32766
  2243  	SQLITE_MAX_VDBE_OP                    = 250000000
  2244  	SQLITE_MAX_WORKER_THREADS             = 8
  2245  	SQLITE_MSVC_H                         = 0
  2246  	SQLITE_MUTEX_STATIC_TEMPDIR           = 11
  2247  	SQLITE_MX_JUMP_OPCODE                 = 64
  2248  	SQLITE_MinMaxOpt                      = 0x00010000
  2249  	SQLITE_NEED_ERR_NAME                  = 0
  2250  	SQLITE_NOMEM_BKPT                     = 7
  2251  	SQLITE_NOTNULL                        = 0x90
  2252  	SQLITE_NTUNE                          = 6
  2253  	SQLITE_NULLEQ                         = 0x80
  2254  	SQLITE_N_BTREE_META                   = 16
  2255  	SQLITE_N_LIMIT                        = 12
  2256  	SQLITE_N_STDTYPE                      = 6
  2257  	SQLITE_NoCkptOnClose                  = 0x00000800
  2258  	SQLITE_NoSchemaError                  = 0x08000000
  2259  	SQLITE_NullCallback                   = 0x00000100
  2260  	SQLITE_OS_OTHER                       = 0
  2261  	SQLITE_OS_SETUP_H                     = 0
  2262  	SQLITE_OS_UNIX                        = 1
  2263  	SQLITE_OS_WIN                         = 0
  2264  	SQLITE_OmitNoopJoin                   = 0x00000100
  2265  	SQLITE_OmitOrderBy                    = 0x00040000
  2266  	SQLITE_OrderByIdxJoin                 = 0x00000040
  2267  	SQLITE_PAGER_H                        = 0
  2268  	SQLITE_POWERSAFE_OVERWRITE            = 1
  2269  	SQLITE_PREPARE_MASK                   = 0x0f
  2270  	SQLITE_PREPARE_SAVESQL                = 0x80
  2271  	SQLITE_PRINTF_INTERNAL                = 0x01
  2272  	SQLITE_PRINTF_MALLOCED                = 0x04
  2273  	SQLITE_PRINTF_SQLFUNC                 = 0x02
  2274  	SQLITE_PTRSIZE                        = 8
  2275  	SQLITE_PropagateConst                 = 0x00008000
  2276  	SQLITE_PushDown                       = 0x00001000
  2277  	SQLITE_QueryFlattener                 = 0x00000001
  2278  	SQLITE_QueryOnly                      = 0x00100000
  2279  	SQLITE_ReadUncommit                   = 0x00000400
  2280  	SQLITE_RecTriggers                    = 0x00002000
  2281  	SQLITE_ReleaseReg                     = 0x00400000
  2282  	SQLITE_ResetDatabase                  = 0x02000000
  2283  	SQLITE_ReverseOrder                   = 0x00001000
  2284  	SQLITE_SO_ASC                         = 0
  2285  	SQLITE_SO_DESC                        = 1
  2286  	SQLITE_SO_UNDEFINED                   = -1
  2287  	SQLITE_STATE_BUSY                     = 0x6d
  2288  	SQLITE_STATE_CLOSED                   = 0xce
  2289  	SQLITE_STATE_ERROR                    = 0xd5
  2290  	SQLITE_STATE_OPEN                     = 0x76
  2291  	SQLITE_STATE_SICK                     = 0xba
  2292  	SQLITE_STATE_ZOMBIE                   = 0xa7
  2293  	SQLITE_SYSTEM_MALLOC                  = 1
  2294  	SQLITE_SeekScan                       = 0x00020000
  2295  	SQLITE_ShortColNames                  = 0x00000040
  2296  	SQLITE_SimplifyJoin                   = 0x00002000
  2297  	SQLITE_SkipScan                       = 0x00004000
  2298  	SQLITE_Stat4                          = 0x00000800
  2299  	SQLITE_TEMP_FILE_PREFIX               = "etilqs_"
  2300  	SQLITE_TOKEN_KEYWORD                  = 0x2
  2301  	SQLITE_TOKEN_QUOTED                   = 0x1
  2302  	SQLITE_TRACE_LEGACY                   = 0x40
  2303  	SQLITE_TRACE_NONLEGACY_MASK           = 0x0f
  2304  	SQLITE_TRACE_XPROFILE                 = 0x80
  2305  	SQLITE_Transitive                     = 0x00000080
  2306  	SQLITE_TriggerEQP                     = 0x01000000
  2307  	SQLITE_TrustedSchema                  = 0x00000080
  2308  	SQLITE_UTF16NATIVE                    = 2
  2309  	SQLITE_VDBE_H                         = 0
  2310  	SQLITE_VTABRISK_High                  = 2
  2311  	SQLITE_VTABRISK_Low                   = 0
  2312  	SQLITE_VTABRISK_Normal                = 1
  2313  	SQLITE_WSD                            = 0
  2314  	SQLITE_WindowFunc                     = 0x00000002
  2315  	SQLITE_WriteSchema                    = 0x00000001
  2316  	SRT_Coroutine                         = 13
  2317  	SRT_Discard                           = 4
  2318  	SRT_DistFifo                          = 5
  2319  	SRT_DistQueue                         = 6
  2320  	SRT_EphemTab                          = 12
  2321  	SRT_Except                            = 2
  2322  	SRT_Exists                            = 3
  2323  	SRT_Fifo                              = 8
  2324  	SRT_Mem                               = 10
  2325  	SRT_Output                            = 9
  2326  	SRT_Queue                             = 7
  2327  	SRT_Set                               = 11
  2328  	SRT_Table                             = 14
  2329  	SRT_Union                             = 1
  2330  	SRT_Upfrom                            = 15
  2331  	STDC_HEADERS                          = 1
  2332  	TABTYP_NORM                           = 0
  2333  	TABTYP_VIEW                           = 2
  2334  	TABTYP_VTAB                           = 1
  2335  	TF_Autoincrement                      = 0x00000008
  2336  	TF_Ephemeral                          = 0x00004000
  2337  	TF_Eponymous                          = 0x00008000
  2338  	TF_HasGenerated                       = 0x00000060
  2339  	TF_HasHidden                          = 0x00000002
  2340  	TF_HasNotNull                         = 0x00000800
  2341  	TF_HasPrimaryKey                      = 0x00000004
  2342  	TF_HasStat1                           = 0x00000010
  2343  	TF_HasStat4                           = 0x00002000
  2344  	TF_HasStored                          = 0x00000040
  2345  	TF_HasVirtual                         = 0x00000020
  2346  	TF_NoVisibleRowid                     = 0x00000200
  2347  	TF_OOOHidden                          = 0x00000400
  2348  	TF_Readonly                           = 0x00000001
  2349  	TF_Shadow                             = 0x00001000
  2350  	TF_StatsUsed                          = 0x00000100
  2351  	TF_Strict                             = 0x00010000
  2352  	TF_WithoutRowid                       = 0x00000080
  2353  	TK_ABORT                              = 27
  2354  	TK_ACTION                             = 28
  2355  	TK_ADD                                = 163
  2356  	TK_AFTER                              = 29
  2357  	TK_AGG_COLUMN                         = 169
  2358  	TK_AGG_FUNCTION                       = 168
  2359  	TK_ALL                                = 135
  2360  	TK_ALTER                              = 162
  2361  	TK_ALWAYS                             = 96
  2362  	TK_ANALYZE                            = 30
  2363  	TK_AND                                = 44
  2364  	TK_ANY                                = 101
  2365  	TK_AS                                 = 24
  2366  	TK_ASC                                = 31
  2367  	TK_ASTERISK                           = 180
  2368  	TK_ATTACH                             = 32
  2369  	TK_AUTOINCR                           = 126
  2370  	TK_BEFORE                             = 33
  2371  	TK_BEGIN                              = 5
  2372  	TK_BETWEEN                            = 48
  2373  	TK_BY                                 = 34
  2374  	TK_CASCADE                            = 35
  2375  	TK_CASE                               = 157
  2376  	TK_CAST                               = 36
  2377  	TK_CHECK                              = 124
  2378  	TK_COLLATE                            = 113
  2379  	TK_COLUMN                             = 167
  2380  	TK_COLUMNKW                           = 60
  2381  	TK_COMMIT                             = 10
  2382  	TK_CONFLICT                           = 37
  2383  	TK_CONSTRAINT                         = 119
  2384  	TK_CREATE                             = 17
  2385  	TK_CTIME_KW                           = 100
  2386  	TK_CURRENT                            = 85
  2387  	TK_DATABASE                           = 38
  2388  	TK_DEFAULT                            = 120
  2389  	TK_DEFERRABLE                         = 131
  2390  	TK_DEFERRED                           = 7
  2391  	TK_DELETE                             = 128
  2392  	TK_DESC                               = 39
  2393  	TK_DETACH                             = 40
  2394  	TK_DISTINCT                           = 140
  2395  	TK_DO                                 = 61
  2396  	TK_DROP                               = 133
  2397  	TK_EACH                               = 41
  2398  	TK_ELSE                               = 160
  2399  	TK_END                                = 11
  2400  	TK_ESCAPE                             = 58
  2401  	TK_EXCEPT                             = 136
  2402  	TK_EXCLUDE                            = 91
  2403  	TK_EXCLUSIVE                          = 9
  2404  	TK_EXISTS                             = 20
  2405  	TK_EXPLAIN                            = 2
  2406  	TK_FAIL                               = 42
  2407  	TK_FILTER                             = 166
  2408  	TK_FIRST                              = 83
  2409  	TK_FOLLOWING                          = 86
  2410  	TK_FOR                                = 62
  2411  	TK_FOREIGN                            = 132
  2412  	TK_FROM                               = 142
  2413  	TK_FUNCTION                           = 172
  2414  	TK_GENERATED                          = 95
  2415  	TK_GROUP                              = 146
  2416  	TK_GROUPS                             = 92
  2417  	TK_HAVING                             = 147
  2418  	TK_IF                                 = 18
  2419  	TK_IF_NULL_ROW                        = 179
  2420  	TK_IGNORE                             = 63
  2421  	TK_IMMEDIATE                          = 8
  2422  	TK_IN                                 = 49
  2423  	TK_INDEX                              = 161
  2424  	TK_INDEXED                            = 116
  2425  	TK_INITIALLY                          = 64
  2426  	TK_INSERT                             = 127
  2427  	TK_INSTEAD                            = 65
  2428  	TK_INTERSECT                          = 137
  2429  	TK_INTO                               = 151
  2430  	TK_IS                                 = 45
  2431  	TK_ISNOT                              = 171
  2432  	TK_ISNULL                             = 50
  2433  	TK_JOIN                               = 143
  2434  	TK_JOIN_KW                            = 118
  2435  	TK_KEY                                = 67
  2436  	TK_LAST                               = 84
  2437  	TK_LIKE_KW                            = 47
  2438  	TK_LIMIT                              = 148
  2439  	TK_MATCH                              = 46
  2440  	TK_MATERIALIZED                       = 97
  2441  	TK_NO                                 = 66
  2442  	TK_NOT                                = 19
  2443  	TK_NOTHING                            = 152
  2444  	TK_NOTNULL                            = 51
  2445  	TK_NULL                               = 121
  2446  	TK_NULLS                              = 82
  2447  	TK_OF                                 = 68
  2448  	TK_OFFSET                             = 69
  2449  	TK_ON                                 = 115
  2450  	TK_OR                                 = 43
  2451  	TK_ORDER                              = 145
  2452  	TK_OTHERS                             = 93
  2453  	TK_OVER                               = 165
  2454  	TK_PARTITION                          = 87
  2455  	TK_PLAN                               = 4
  2456  	TK_PRAGMA                             = 70
  2457  	TK_PRECEDING                          = 88
  2458  	TK_PRIMARY                            = 122
  2459  	TK_PTR                                = 112
  2460  	TK_QUERY                              = 3
  2461  	TK_RAISE                              = 71
  2462  	TK_RANGE                              = 89
  2463  	TK_RECURSIVE                          = 72
  2464  	TK_REFERENCES                         = 125
  2465  	TK_REGISTER                           = 176
  2466  	TK_REINDEX                            = 98
  2467  	TK_RELEASE                            = 14
  2468  	TK_RENAME                             = 99
  2469  	TK_REPLACE                            = 73
  2470  	TK_RESTRICT                           = 74
  2471  	TK_RETURNING                          = 150
  2472  	TK_ROLLBACK                           = 12
  2473  	TK_ROW                                = 75
  2474  	TK_ROWS                               = 76
  2475  	TK_SAVEPOINT                          = 13
  2476  	TK_SELECT                             = 138
  2477  	TK_SELECT_COLUMN                      = 178
  2478  	TK_SET                                = 130
  2479  	TK_SPAN                               = 181
  2480  	TK_TABLE                              = 16
  2481  	TK_TEMP                               = 21
  2482  	TK_THEN                               = 159
  2483  	TK_TIES                               = 94
  2484  	TK_TO                                 = 15
  2485  	TK_TRANSACTION                        = 6
  2486  	TK_TRIGGER                            = 77
  2487  	TK_TRUEFALSE                          = 170
  2488  	TK_TRUTH                              = 175
  2489  	TK_UMINUS                             = 173
  2490  	TK_UNBOUNDED                          = 90
  2491  	TK_UNION                              = 134
  2492  	TK_UNIQUE                             = 123
  2493  	TK_UPDATE                             = 129
  2494  	TK_UPLUS                              = 174
  2495  	TK_USING                              = 144
  2496  	TK_VACUUM                             = 78
  2497  	TK_VALUES                             = 139
  2498  	TK_VECTOR                             = 177
  2499  	TK_VIEW                               = 79
  2500  	TK_VIRTUAL                            = 80
  2501  	TK_WHEN                               = 158
  2502  	TK_WHERE                              = 149
  2503  	TK_WINDOW                             = 164
  2504  	TK_WITH                               = 81
  2505  	TK_WITHOUT                            = 26
  2506  	TREETRACE_ENABLED                     = 0
  2507  	TRIGGER_AFTER                         = 2
  2508  	TRIGGER_BEFORE                        = 1
  2509  	UINT16_MAX                            = 65535
  2510  	UINT32_MAX                            = 4294967295
  2511  	UINT64_MAX                            = 18446744073709551615
  2512  	UINT8_MAX                             = 255
  2513  	UINTMAX_MAX                           = 18446744073709551615
  2514  	UINTPTR_MAX                           = 18446744073709551615
  2515  	UINT_FAST16_MAX                       = 18446744073709551615
  2516  	UINT_FAST32_MAX                       = 18446744073709551615
  2517  	UINT_FAST64_MAX                       = 18446744073709551615
  2518  	UINT_FAST8_MAX                        = 255
  2519  	UINT_LEAST16_MAX                      = 65535
  2520  	UINT_LEAST32_MAX                      = 4294967295
  2521  	UINT_LEAST64_MAX                      = 18446744073709551615
  2522  	UINT_LEAST8_MAX                       = 255
  2523  	WCHAR_MAX                             = 4294967295
  2524  	WCHAR_MIN                             = 0
  2525  	WHERE_AGG_DISTINCT                    = 0x0400
  2526  	WHERE_DISTINCTBY                      = 0x0080
  2527  	WHERE_DISTINCT_NOOP                   = 0
  2528  	WHERE_DISTINCT_ORDERED                = 2
  2529  	WHERE_DISTINCT_UNIQUE                 = 1
  2530  	WHERE_DISTINCT_UNORDERED              = 3
  2531  	WHERE_DUPLICATES_OK                   = 0x0010
  2532  	WHERE_GROUPBY                         = 0x0040
  2533  	WHERE_ONEPASS_DESIRED                 = 0x0004
  2534  	WHERE_ONEPASS_MULTIROW                = 0x0008
  2535  	WHERE_ORDERBY_LIMIT                   = 0x0800
  2536  	WHERE_ORDERBY_MAX                     = 0x0002
  2537  	WHERE_ORDERBY_MIN                     = 0x0001
  2538  	WHERE_ORDERBY_NORMAL                  = 0x0000
  2539  	WHERE_OR_SUBCLAUSE                    = 0x0020
  2540  	WHERE_RIGHT_JOIN                      = 0x1000
  2541  	WHERE_SORTBYGROUP                     = 0x0200
  2542  	WHERE_USE_LIMIT                       = 0x4000
  2543  	WHERE_WANT_DISTINCT                   = 0x0100
  2544  	WINT_MAX                              = 4294967295
  2545  	WINT_MIN                              = 0
  2546  	WRC_Abort                             = 2
  2547  	WRC_Continue                          = 0
  2548  	WRC_Prune                             = 1
  2549  	XN_EXPR                               = -2
  2550  	XN_ROWID                              = -1
  2551  	X_ANSI_STDDEF_H                       = 0
  2552  	X_BITS_STDINT_UINTN_H                 = 1
  2553  	X_BITS_WCHAR_H                        = 1
  2554  	X_BSD_PTRDIFF_T_                      = 0
  2555  	X_GCC_MAX_ALIGN_T                     = 0
  2556  	X_GCC_PTRDIFF_T                       = 0
  2557  	X_GCC_WRAP_STDINT_H                   = 0
  2558  	X_GNU_SOURCE                          = 0
  2559  	X_INTTYPES_H                          = 1
  2560  	X_LARGEFILE_SOURCE                    = 1
  2561  	X_LARGE_FILE                          = 1
  2562  	X_PTRDIFF_T                           = 0
  2563  	X_PTRDIFF_T_                          = 0
  2564  	X_PTRDIFF_T_DECLARED                  = 0
  2565  	X_SQLITE_OS_H_                        = 0
  2566  	X_STDDEF_H                            = 0
  2567  	X_STDDEF_H_                           = 0
  2568  	X_STDINT_H                            = 1
  2569  	X_T_PTRDIFF                           = 0
  2570  	X_T_PTRDIFF_                          = 0
  2571  	X_XOPEN_SOURCE                        = 600
  2572  	SESSION_STREAM_TCL_VAR                = "sqlite3session_streams"
  2573  	ELF_PRARGSZ                           = 80
  2574  	ESR_MAGIC                             = 0x45535201
  2575  	EXTRA_MAGIC                           = 0x45585401
  2576  	FPSIMD_MAGIC                          = 0x46508001
  2577  	MAX_PREPARED_STMTS                    = 100
  2578  	MINSIGSTKSZ                           = 5120
  2579  	NSIG                                  = 65
  2580  	NUM_PREPARED_STMTS                    = 10
  2581  	SA_INTERRUPT                          = 0x20000000
  2582  	SA_NOCLDSTOP                          = 1
  2583  	SA_NOCLDWAIT                          = 2
  2584  	SA_NODEFER                            = 0x40000000
  2585  	SA_NOMASK                             = 1073741824
  2586  	SA_ONESHOT                            = 2147483648
  2587  	SA_ONSTACK                            = 0x08000000
  2588  	SA_RESETHAND                          = 0x80000000
  2589  	SA_RESTART                            = 0x10000000
  2590  	SA_SIGINFO                            = 4
  2591  	SA_STACK                              = 134217728
  2592  	SIGABRT                               = 6
  2593  	SIGALRM                               = 14
  2594  	SIGBUS                                = 7
  2595  	SIGCHLD                               = 17
  2596  	SIGCLD                                = 17
  2597  	SIGCONT                               = 18
  2598  	SIGFPE                                = 8
  2599  	SIGHUP                                = 1
  2600  	SIGILL                                = 4
  2601  	SIGINT                                = 2
  2602  	SIGIO                                 = 29
  2603  	SIGIOT                                = 6
  2604  	SIGKILL                               = 9
  2605  	SIGPIPE                               = 13
  2606  	SIGPOLL                               = 29
  2607  	SIGPROF                               = 27
  2608  	SIGPWR                                = 30
  2609  	SIGQUIT                               = 3
  2610  	SIGSEGV                               = 11
  2611  	SIGSTKFLT                             = 16
  2612  	SIGSTKSZ                              = 16384
  2613  	SIGSTOP                               = 19
  2614  	SIGSYS                                = 31
  2615  	SIGTERM                               = 15
  2616  	SIGTRAP                               = 5
  2617  	SIGTSTP                               = 20
  2618  	SIGTTIN                               = 21
  2619  	SIGTTOU                               = 22
  2620  	SIGURG                                = 23
  2621  	SIGUSR1                               = 10
  2622  	SIGUSR2                               = 12
  2623  	SIGVTALRM                             = 26
  2624  	SIGWINCH                              = 28
  2625  	SIGXCPU                               = 24
  2626  	SIGXFSZ                               = 25
  2627  	SIG_BLOCK                             = 0
  2628  	SIG_SETMASK                           = 2
  2629  	SIG_UNBLOCK                           = 1
  2630  	SQLITE_EVAL_WITHOUTNULLS              = 0x00001
  2631  	SQLITE_TCL_NRE                        = 1
  2632  	SVE_MAGIC                             = 0x53564501
  2633  	SVE_NUM_PREGS                         = 16
  2634  	SVE_NUM_ZREGS                         = 32
  2635  	SVE_VL_MAX                            = 8192
  2636  	SVE_VL_MIN                            = 16
  2637  	SVE_VQ_BYTES                          = 16
  2638  	SVE_VQ_MAX                            = 512
  2639  	SVE_VQ_MIN                            = 1
  2640  	TCLSH                                 = 1
  2641  	X_ASM_GENERIC_INT_LL64_H              = 0
  2642  	X_ASM_GENERIC_TYPES_H                 = 0
  2643  	X_BITS_SIGACTION_H                    = 1
  2644  	X_BITS_SIGCONTEXT_H                   = 1
  2645  	X_BITS_SIGEVENT_CONSTS_H              = 1
  2646  	X_BITS_SIGINFO_ARCH_H                 = 1
  2647  	X_BITS_SIGINFO_CONSTS_H               = 1
  2648  	X_BITS_SIGNUM_GENERIC_H               = 1
  2649  	X_BITS_SIGNUM_H                       = 1
  2650  	X_BITS_SIGSTACK_H                     = 1
  2651  	X_BITS_SIGTHREAD_H                    = 1
  2652  	X_BITS_SS_FLAGS_H                     = 1
  2653  	X_LINUX_POSIX_TYPES_H                 = 0
  2654  	X_LINUX_TYPES_H                       = 0
  2655  	X_NSIG                                = 65
  2656  	X_SIGNAL_H                            = 0
  2657  	X_SYS_PROCFS_H                        = 1
  2658  	X_SYS_UCONTEXT_H                      = 1
  2659  	X_SYS_USER_H                          = 1
  2660  	ADJ_ESTERROR                          = 0x0008
  2661  	ADJ_FREQUENCY                         = 0x0002
  2662  	ADJ_MAXERROR                          = 0x0004
  2663  	ADJ_MICRO                             = 0x1000
  2664  	ADJ_NANO                              = 0x2000
  2665  	ADJ_OFFSET                            = 0x0001
  2666  	ADJ_OFFSET_SINGLESHOT                 = 0x8001
  2667  	ADJ_OFFSET_SS_READ                    = 0xa001
  2668  	ADJ_SETOFFSET                         = 0x0100
  2669  	ADJ_STATUS                            = 0x0010
  2670  	ADJ_TAI                               = 0x0080
  2671  	ADJ_TICK                              = 0x4000
  2672  	ADJ_TIMECONST                         = 0x0020
  2673  	CACHE_STALE                           = 0
  2674  	CURTYPE_BTREE                         = 0
  2675  	CURTYPE_PSEUDO                        = 3
  2676  	CURTYPE_SORTER                        = 1
  2677  	CURTYPE_VTAB                          = 2
  2678  	INT16_WIDTH                           = 16
  2679  	INT32_WIDTH                           = 32
  2680  	INT64_WIDTH                           = 64
  2681  	INT8_WIDTH                            = 8
  2682  	INTMAX_WIDTH                          = 64
  2683  	INTPTR_WIDTH                          = 64
  2684  	INT_FAST16_WIDTH                      = 64
  2685  	INT_FAST32_WIDTH                      = 64
  2686  	INT_FAST64_WIDTH                      = 64
  2687  	INT_FAST8_WIDTH                       = 8
  2688  	INT_LEAST16_WIDTH                     = 16
  2689  	INT_LEAST32_WIDTH                     = 32
  2690  	INT_LEAST64_WIDTH                     = 64
  2691  	INT_LEAST8_WIDTH                      = 8
  2692  	L_cuserid                             = 9
  2693  	MEM_AffMask                           = 0x003f
  2694  	MEM_Agg                               = 0x8000
  2695  	MEM_Blob                              = 0x0010
  2696  	MEM_Cleared                           = 0x0100
  2697  	MEM_Dyn                               = 0x1000
  2698  	MEM_Ephem                             = 0x4000
  2699  	MEM_FromBind                          = 0x0040
  2700  	MEM_Int                               = 0x0004
  2701  	MEM_IntReal                           = 0x0020
  2702  	MEM_Null                              = 0x0001
  2703  	MEM_Real                              = 0x0008
  2704  	MEM_Static                            = 0x2000
  2705  	MEM_Str                               = 0x0002
  2706  	MEM_Subtype                           = 0x0800
  2707  	MEM_Term                              = 0x0200
  2708  	MEM_TypeMask                          = 0x0dbf
  2709  	MEM_Undefined                         = 0x0000
  2710  	MEM_Zero                              = 0x0400
  2711  	MOD_CLKA                              = 32769
  2712  	MOD_CLKB                              = 16384
  2713  	MOD_ESTERROR                          = 8
  2714  	MOD_FREQUENCY                         = 2
  2715  	MOD_MAXERROR                          = 4
  2716  	MOD_MICRO                             = 4096
  2717  	MOD_NANO                              = 8192
  2718  	MOD_OFFSET                            = 1
  2719  	MOD_STATUS                            = 16
  2720  	MOD_TAI                               = 128
  2721  	MOD_TIMECONST                         = 32
  2722  	PRIO_MAX                              = 20
  2723  	PRIO_MIN                              = -20
  2724  	PTRDIFF_WIDTH                         = 64
  2725  	RENAME_EXCHANGE                       = 2
  2726  	RENAME_NOREPLACE                      = 1
  2727  	RENAME_WHITEOUT                       = 4
  2728  	RLIM64_INFINITY                       = 0xffffffffffffffff
  2729  	RLIM_INFINITY                         = 0xffffffffffffffff
  2730  	RLIM_SAVED_CUR                        = 18446744073709551615
  2731  	RLIM_SAVED_MAX                        = 18446744073709551615
  2732  	SEEK_DATA                             = 3
  2733  	SEEK_HOLE                             = 4
  2734  	SIG_ATOMIC_WIDTH                      = 32
  2735  	SIZE_WIDTH                            = 64
  2736  	SQLITE_ENABLE_LOCKING_STYLE           = 0
  2737  	SQLITE_FRAME_MAGIC                    = 0x879fb71e
  2738  	SQLITE_MAX_SCHEMA_RETRY               = 50
  2739  	SQLITE_VDBEINT_H                      = 0
  2740  	STA_CLK                               = 0x8000
  2741  	STA_CLOCKERR                          = 0x1000
  2742  	STA_DEL                               = 0x0020
  2743  	STA_FLL                               = 0x0008
  2744  	STA_FREQHOLD                          = 0x0080
  2745  	STA_INS                               = 0x0010
  2746  	STA_MODE                              = 0x4000
  2747  	STA_NANO                              = 0x2000
  2748  	STA_PLL                               = 0x0001
  2749  	STA_PPSERROR                          = 0x0800
  2750  	STA_PPSFREQ                           = 0x0002
  2751  	STA_PPSJITTER                         = 0x0200
  2752  	STA_PPSSIGNAL                         = 0x0100
  2753  	STA_PPSTIME                           = 0x0004
  2754  	STA_PPSWANDER                         = 0x0400
  2755  	STA_RONLY                             = 65280
  2756  	STA_UNSYNC                            = 0x0040
  2757  	UINT16_WIDTH                          = 16
  2758  	UINT32_WIDTH                          = 32
  2759  	UINT64_WIDTH                          = 64
  2760  	UINT8_WIDTH                           = 8
  2761  	UINTMAX_WIDTH                         = 64
  2762  	UINTPTR_WIDTH                         = 64
  2763  	UINT_FAST16_WIDTH                     = 64
  2764  	UINT_FAST32_WIDTH                     = 64
  2765  	UINT_FAST64_WIDTH                     = 64
  2766  	UINT_FAST8_WIDTH                      = 8
  2767  	UINT_LEAST16_WIDTH                    = 16
  2768  	UINT_LEAST32_WIDTH                    = 32
  2769  	UINT_LEAST64_WIDTH                    = 64
  2770  	UINT_LEAST8_WIDTH                     = 8
  2771  	VDBE_DISPLAY_P4                       = 1
  2772  	VDBE_HALT_STATE                       = 3
  2773  	VDBE_INIT_STATE                       = 0
  2774  	VDBE_READY_STATE                      = 1
  2775  	VDBE_RUN_STATE                        = 2
  2776  	WCHAR_WIDTH                           = 32
  2777  	WINT_WIDTH                            = 32
  2778  	X_BITS_TIMEX_H                        = 1
  2779  	X_ISOC11_SOURCE                       = 1
  2780  	X_ISOC2X_SOURCE                       = 1
  2781  	X_ISOC95_SOURCE                       = 1
  2782  	X_ISOC99_SOURCE                       = 1
  2783  	X_LARGEFILE64_SOURCE                  = 1
  2784  	X_SYS_RESOURCE_H                      = 1
  2785  	X_XOPEN_SOURCE_EXTENDED               = 1
  2786  	BTCF_AtLast                           = 0x08
  2787  	BTCF_Incrblob                         = 0x10
  2788  	BTCF_Multiple                         = 0x20
  2789  	BTCF_Pinned                           = 0x40
  2790  	BTCF_ValidNKey                        = 0x02
  2791  	BTCF_ValidOvfl                        = 0x04
  2792  	BTCF_WriteFlag                        = 0x01
  2793  	BTCURSOR_MAX_DEPTH                    = 20
  2794  	BTS_EXCLUSIVE                         = 0x0040
  2795  	BTS_FAST_SECURE                       = 0x000c
  2796  	BTS_INITIALLY_EMPTY                   = 0x0010
  2797  	BTS_NO_WAL                            = 0x0020
  2798  	BTS_OVERWRITE                         = 0x0008
  2799  	BTS_PAGESIZE_FIXED                    = 0x0002
  2800  	BTS_PENDING                           = 0x0080
  2801  	BTS_READ_ONLY                         = 0x0001
  2802  	BTS_SECURE_DELETE                     = 0x0004
  2803  	CURSOR_FAULT                          = 4
  2804  	CURSOR_INVALID                        = 1
  2805  	CURSOR_REQUIRESEEK                    = 3
  2806  	CURSOR_SKIPNEXT                       = 2
  2807  	CURSOR_VALID                          = 0
  2808  	PTF_INTKEY                            = 0x01
  2809  	PTF_LEAF                              = 0x08
  2810  	PTF_LEAFDATA                          = 0x04
  2811  	PTF_ZERODATA                          = 0x02
  2812  	PTRMAP_BTREE                          = 5
  2813  	PTRMAP_FREEPAGE                       = 2
  2814  	PTRMAP_OVERFLOW1                      = 3
  2815  	PTRMAP_OVERFLOW2                      = 4
  2816  	PTRMAP_ROOTPAGE                       = 1
  2817  	READ_LOCK                             = 1
  2818  	SQLITE_FILE_HEADER                    = "SQLite format 3"
  2819  	TRANS_NONE                            = 0
  2820  	TRANS_READ                            = 1
  2821  	TRANS_WRITE                           = 2
  2822  	WRITE_LOCK                            = 2
  2823  	CLONE_CHILD_CLEARTID                  = 0x00200000
  2824  	CLONE_CHILD_SETTID                    = 0x01000000
  2825  	CLONE_DETACHED                        = 0x00400000
  2826  	CLONE_FILES                           = 0x00000400
  2827  	CLONE_FS                              = 0x00000200
  2828  	CLONE_IO                              = 0x80000000
  2829  	CLONE_NEWCGROUP                       = 0x02000000
  2830  	CLONE_NEWIPC                          = 0x08000000
  2831  	CLONE_NEWNET                          = 0x40000000
  2832  	CLONE_NEWNS                           = 0x00020000
  2833  	CLONE_NEWPID                          = 0x20000000
  2834  	CLONE_NEWUSER                         = 0x10000000
  2835  	CLONE_NEWUTS                          = 0x04000000
  2836  	CLONE_PARENT                          = 0x00008000
  2837  	CLONE_PARENT_SETTID                   = 0x00100000
  2838  	CLONE_PIDFD                           = 0x00001000
  2839  	CLONE_PTRACE                          = 0x00002000
  2840  	CLONE_SETTLS                          = 0x00080000
  2841  	CLONE_SIGHAND                         = 0x00000800
  2842  	CLONE_SYSVSEM                         = 0x00040000
  2843  	CLONE_THREAD                          = 0x00010000
  2844  	CLONE_UNTRACED                        = 0x00800000
  2845  	CLONE_VFORK                           = 0x00004000
  2846  	CLONE_VM                              = 0x00000100
  2847  	CPU_SETSIZE                           = 1024
  2848  	CSIGNAL                               = 0x000000ff
  2849  	N_THREAD                              = 26
  2850  	PTHREAD_BARRIER_SERIAL_THREAD         = -1
  2851  	PTHREAD_ONCE_INIT                     = 0
  2852  	SCHED_BATCH                           = 3
  2853  	SCHED_DEADLINE                        = 6
  2854  	SCHED_FIFO                            = 1
  2855  	SCHED_IDLE                            = 5
  2856  	SCHED_ISO                             = 4
  2857  	SCHED_OTHER                           = 0
  2858  	SCHED_RESET_ON_FORK                   = 0x40000000
  2859  	SCHED_RR                              = 2
  2860  	X_BITS_CPU_SET_H                      = 1
  2861  	X_BITS_SCHED_H                        = 1
  2862  	X_BITS_SETJMP_H                       = 1
  2863  	X_BITS_TYPES_STRUCT_SCHED_PARAM       = 1
  2864  	X_PTHREAD_H                           = 1
  2865  	X_SCHED_H                             = 1
  2866  	TCL_THREADS                           = 0
  2867  	MX_CHUNK_NUMBER                       = 299
  2868  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET   = 400
  2869  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET       = 700
  2870  	DEVSYM_MAX_PATHNAME                   = 512
  2871  	DEVSYM_VFS_NAME                       = "devsym"
  2872  	WRITECRASH_NAME                       = "writecrash"
  2873  	AT_EMPTY_PATH                         = 0x1000
  2874  	AT_NO_AUTOMOUNT                       = 0x800
  2875  	AT_RECURSIVE                          = 0x8000
  2876  	AT_STATX_DONT_SYNC                    = 0x4000
  2877  	AT_STATX_FORCE_SYNC                   = 0x2000
  2878  	AT_STATX_SYNC_AS_STAT                 = 0x0000
  2879  	AT_STATX_SYNC_TYPE                    = 0x6000
  2880  	DN_ACCESS                             = 0x00000001
  2881  	DN_ATTRIB                             = 0x00000020
  2882  	DN_CREATE                             = 0x00000004
  2883  	DN_DELETE                             = 0x00000008
  2884  	DN_MODIFY                             = 0x00000002
  2885  	DN_MULTISHOT                          = 0x80000000
  2886  	DN_RENAME                             = 0x00000010
  2887  	FALLOC_FL_COLLAPSE_RANGE              = 0x08
  2888  	FALLOC_FL_INSERT_RANGE                = 0x20
  2889  	FALLOC_FL_KEEP_SIZE                   = 0x01
  2890  	FALLOC_FL_NO_HIDE_STALE               = 0x04
  2891  	FALLOC_FL_PUNCH_HOLE                  = 0x02
  2892  	FALLOC_FL_UNSHARE_RANGE               = 0x40
  2893  	FALLOC_FL_ZERO_RANGE                  = 0x10
  2894  	F_ADD_SEALS                           = 1033
  2895  	F_GETLEASE                            = 1025
  2896  	F_GETOWN_EX                           = 16
  2897  	F_GETPIPE_SZ                          = 1032
  2898  	F_GETSIG                              = 11
  2899  	F_GET_FILE_RW_HINT                    = 1037
  2900  	F_GET_RW_HINT                         = 1035
  2901  	F_GET_SEALS                           = 1034
  2902  	F_NOTIFY                              = 1026
  2903  	F_OFD_GETLK                           = 36
  2904  	F_OFD_SETLK                           = 37
  2905  	F_OFD_SETLKW                          = 38
  2906  	F_SEAL_FUTURE_WRITE                   = 0x0010
  2907  	F_SEAL_GROW                           = 0x0004
  2908  	F_SEAL_SEAL                           = 0x0001
  2909  	F_SEAL_SHRINK                         = 0x0002
  2910  	F_SEAL_WRITE                          = 0x0008
  2911  	F_SETLEASE                            = 1024
  2912  	F_SETOWN_EX                           = 15
  2913  	F_SETPIPE_SZ                          = 1031
  2914  	F_SETSIG                              = 10
  2915  	F_SET_FILE_RW_HINT                    = 1038
  2916  	F_SET_RW_HINT                         = 1036
  2917  	LOCK_MAND                             = 32
  2918  	LOCK_READ                             = 64
  2919  	LOCK_RW                               = 192
  2920  	LOCK_WRITE                            = 128
  2921  	MAX_HANDLE_SZ                         = 128
  2922  	O_DIRECT                              = 65536
  2923  	O_LARGEFILE                           = 0
  2924  	O_NOATIME                             = 262144
  2925  	O_PATH                                = 2097152
  2926  	O_TMPFILE                             = 4210688
  2927  	RWF_WRITE_LIFE_NOT_SET                = 0
  2928  	RWH_WRITE_LIFE_EXTREME                = 5
  2929  	RWH_WRITE_LIFE_LONG                   = 4
  2930  	RWH_WRITE_LIFE_MEDIUM                 = 3
  2931  	RWH_WRITE_LIFE_NONE                   = 1
  2932  	RWH_WRITE_LIFE_SHORT                  = 2
  2933  	SPLICE_F_GIFT                         = 8
  2934  	SPLICE_F_MORE                         = 4
  2935  	SPLICE_F_MOVE                         = 1
  2936  	SPLICE_F_NONBLOCK                     = 2
  2937  	STATX_ALL                             = 0x00000fff
  2938  	STATX_ATIME                           = 0x00000020
  2939  	STATX_ATTR_APPEND                     = 0x00000020
  2940  	STATX_ATTR_AUTOMOUNT                  = 0x00001000
  2941  	STATX_ATTR_COMPRESSED                 = 0x00000004
  2942  	STATX_ATTR_DAX                        = 0x00200000
  2943  	STATX_ATTR_ENCRYPTED                  = 0x00000800
  2944  	STATX_ATTR_IMMUTABLE                  = 0x00000010
  2945  	STATX_ATTR_MOUNT_ROOT                 = 0x00002000
  2946  	STATX_ATTR_NODUMP                     = 0x00000040
  2947  	STATX_ATTR_VERITY                     = 0x00100000
  2948  	STATX_BASIC_STATS                     = 0x000007ff
  2949  	STATX_BLOCKS                          = 0x00000400
  2950  	STATX_BTIME                           = 0x00000800
  2951  	STATX_CTIME                           = 0x00000080
  2952  	STATX_GID                             = 0x00000010
  2953  	STATX_INO                             = 0x00000100
  2954  	STATX_MNT_ID                          = 0x00001000
  2955  	STATX_MODE                            = 0x00000002
  2956  	STATX_MTIME                           = 0x00000040
  2957  	STATX_NLINK                           = 0x00000004
  2958  	STATX_SIZE                            = 0x00000200
  2959  	STATX_TYPE                            = 0x00000001
  2960  	STATX_UID                             = 0x00000008
  2961  	STATX__RESERVED                       = 0x80000000
  2962  	SYNC_FILE_RANGE_WAIT_AFTER            = 4
  2963  	SYNC_FILE_RANGE_WAIT_BEFORE           = 1
  2964  	SYNC_FILE_RANGE_WRITE                 = 2
  2965  	SYNC_FILE_RANGE_WRITE_AND_WAIT        = 7
  2966  	X_FALLOC_H_                           = 0
  2967  	X_LINUX_STAT_H                        = 0
  2968  	X_POSIX_FD_SETSIZE                    = 20
  2969  	X_POSIX_HIWAT                         = 512
  2970  	X_POSIX_QLIMIT                        = 1
  2971  	X_POSIX_UIO_MAXIOV                    = 16
  2972  	SQLITE_INTARRAY_H                     = 0
  2973  	JT_MAX_PATHNAME                       = 512
  2974  	JT_VFS_NAME                           = "jt"
  2975  	MALLOC_LOG_FRAMES                     = 10
  2976  	DEFAULT_SECTOR_SIZE                   = 0x1000
  2977  	MAX_PAGE_SIZE                         = 0x10000
  2978  	MULTIPLEX_CTRL_ENABLE                 = 214014
  2979  	MULTIPLEX_CTRL_SET_CHUNK_SIZE         = 214015
  2980  	MULTIPLEX_CTRL_SET_MAX_CHUNKS         = 214016
  2981  	SQLITE_MULTIPLEX_CHUNK_SIZE           = 2147418112
  2982  	SQLITE_MULTIPLEX_MAX_CHUNKS           = 12
  2983  	SQLITE_MULTIPLEX_VFS_NAME             = "multiplex"
  2984  	SQLITE_TEST_MULTIPLEX_H               = 0
  2985  	MAX_MUTEXES                           = 14
  2986  	STATIC_MUTEXES                        = 12
  2987  	BLOBSIZE                              = 10485760
  2988  	BLOCKSIZE                             = 512
  2989  	DATABASE_FILE                         = 1
  2990  	FS_VFS_NAME                           = "fs"
  2991  	JOURNAL_FILE                          = 2
  2992  	INST_MAX_PATHNAME                     = 512
  2993  	OS_ACCESS                             = 1
  2994  	OS_ANNOTATE                           = 28
  2995  	OS_CHECKRESERVEDLOCK                  = 2
  2996  	OS_CLOSE                              = 3
  2997  	OS_CURRENTTIME                        = 4
  2998  	OS_DELETE                             = 5
  2999  	OS_DEVCHAR                            = 6
  3000  	OS_FILECONTROL                        = 7
  3001  	OS_FILESIZE                           = 8
  3002  	OS_FULLPATHNAME                       = 9
  3003  	OS_LOCK                               = 11
  3004  	OS_NUMEVENTS                          = 29
  3005  	OS_OPEN                               = 12
  3006  	OS_RANDOMNESS                         = 13
  3007  	OS_READ                               = 14
  3008  	OS_SECTORSIZE                         = 15
  3009  	OS_SHMBARRIER                         = 26
  3010  	OS_SHMLOCK                            = 25
  3011  	OS_SHMMAP                             = 23
  3012  	OS_SHMUNMAP                           = 22
  3013  	OS_SLEEP                              = 16
  3014  	OS_SYNC                               = 17
  3015  	OS_TRUNCATE                           = 18
  3016  	OS_UNLOCK                             = 19
  3017  	OS_WRITE                              = 20
  3018  	VFSLOG_BUFFERSIZE                     = 8192
  3019  	TESTPCACHE_CLEAR                      = 0xd42670d4
  3020  	TESTPCACHE_NPAGE                      = 217
  3021  	TESTPCACHE_RESERVE                    = 17
  3022  	TESTPCACHE_VALID                      = 0x364585fd
  3023  	MSG_Close                             = 6
  3024  	MSG_Done                              = 7
  3025  	MSG_Finalize                          = 5
  3026  	MSG_Open                              = 1
  3027  	MSG_Prepare                           = 2
  3028  	MSG_Reset                             = 4
  3029  	MSG_Step                              = 3
  3030  	MADV_COLD                             = 20
  3031  	MADV_DODUMP                           = 17
  3032  	MADV_DOFORK                           = 11
  3033  	MADV_DONTDUMP                         = 16
  3034  	MADV_DONTFORK                         = 10
  3035  	MADV_DONTNEED                         = 4
  3036  	MADV_FREE                             = 8
  3037  	MADV_HUGEPAGE                         = 14
  3038  	MADV_HWPOISON                         = 100
  3039  	MADV_KEEPONFORK                       = 19
  3040  	MADV_MERGEABLE                        = 12
  3041  	MADV_NOHUGEPAGE                       = 15
  3042  	MADV_NORMAL                           = 0
  3043  	MADV_PAGEOUT                          = 21
  3044  	MADV_RANDOM                           = 1
  3045  	MADV_REMOVE                           = 9
  3046  	MADV_SEQUENTIAL                       = 2
  3047  	MADV_UNMERGEABLE                      = 13
  3048  	MADV_WILLNEED                         = 3
  3049  	MADV_WIPEONFORK                       = 18
  3050  	MAP_ANON                              = 32
  3051  	MAP_ANONYMOUS                         = 0x20
  3052  	MAP_DENYWRITE                         = 0x00800
  3053  	MAP_EXECUTABLE                        = 0x01000
  3054  	MAP_FILE                              = 0
  3055  	MAP_FIXED                             = 0x10
  3056  	MAP_FIXED_NOREPLACE                   = 0x100000
  3057  	MAP_GROWSDOWN                         = 0x00100
  3058  	MAP_HUGETLB                           = 0x40000
  3059  	MAP_HUGE_MASK                         = 0x3f
  3060  	MAP_HUGE_SHIFT                        = 26
  3061  	MAP_LOCKED                            = 0x02000
  3062  	MAP_NONBLOCK                          = 0x10000
  3063  	MAP_NORESERVE                         = 0x04000
  3064  	MAP_POPULATE                          = 0x08000
  3065  	MAP_PRIVATE                           = 0x02
  3066  	MAP_SHARED                            = 0x01
  3067  	MAP_SHARED_VALIDATE                   = 0x03
  3068  	MAP_STACK                             = 0x20000
  3069  	MAP_SYNC                              = 0x80000
  3070  	MAP_TYPE                              = 0x0f
  3071  	MCL_CURRENT                           = 1
  3072  	MCL_FUTURE                            = 2
  3073  	MCL_ONFAULT                           = 4
  3074  	MFD_ALLOW_SEALING                     = 2
  3075  	MFD_CLOEXEC                           = 1
  3076  	MFD_HUGETLB                           = 4
  3077  	MLOCK_ONFAULT                         = 1
  3078  	MREMAP_FIXED                          = 2
  3079  	MREMAP_MAYMOVE                        = 1
  3080  	MS_ASYNC                              = 1
  3081  	MS_INVALIDATE                         = 2
  3082  	MS_SYNC                               = 4
  3083  	PKEY_DISABLE_ACCESS                   = 0x1
  3084  	PKEY_DISABLE_WRITE                    = 0x2
  3085  	POSIX_MADV_DONTNEED                   = 4
  3086  	POSIX_MADV_NORMAL                     = 0
  3087  	POSIX_MADV_RANDOM                     = 1
  3088  	POSIX_MADV_SEQUENTIAL                 = 2
  3089  	POSIX_MADV_WILLNEED                   = 3
  3090  	PROT_EXEC                             = 0x4
  3091  	PROT_GROWSDOWN                        = 0x01000000
  3092  	PROT_GROWSUP                          = 0x02000000
  3093  	PROT_NONE                             = 0x0
  3094  	PROT_READ                             = 0x1
  3095  	PROT_WRITE                            = 0x2
  3096  	X_SYS_MMAN_H                          = 1
  3097  	TCLVAR_NAME_EQ                        = 101
  3098  	TCLVAR_NAME_MATCH                     = 109
  3099  	TCLVAR_VALUE_GLOB                     = 103
  3100  	TCLVAR_VALUE_LIKE                     = 108
  3101  	TCLVAR_VALUE_REGEXP                   = 114
  3102  	FAULT_INJECT_NONE                     = 0
  3103  	FAULT_INJECT_PERSISTENT               = 2
  3104  	FAULT_INJECT_TRANSIENT                = 1
  3105  	TESTVFS_ACCESS_MASK                   = 0x00004000
  3106  	TESTVFS_ALL_MASK                      = 0x001FFFFF
  3107  	TESTVFS_CKLOCK_MASK                   = 0x00080000
  3108  	TESTVFS_CLOSE_MASK                    = 0x00000800
  3109  	TESTVFS_DELETE_MASK                   = 0x00000400
  3110  	TESTVFS_FCNTL_MASK                    = 0x00100000
  3111  	TESTVFS_FULLPATHNAME_MASK             = 0x00008000
  3112  	TESTVFS_LOCK_MASK                     = 0x00040000
  3113  	TESTVFS_MAX_ARGS                      = 12
  3114  	TESTVFS_MAX_PAGES                     = 1024
  3115  	TESTVFS_OPEN_MASK                     = 0x00000100
  3116  	TESTVFS_READ_MASK                     = 0x00010000
  3117  	TESTVFS_SHMBARRIER_MASK               = 0x00000040
  3118  	TESTVFS_SHMCLOSE_MASK                 = 0x00000080
  3119  	TESTVFS_SHMLOCK_MASK                  = 0x00000010
  3120  	TESTVFS_SHMMAP_MASK                   = 0x00000020
  3121  	TESTVFS_SHMOPEN_MASK                  = 0x00000001
  3122  	TESTVFS_SYNC_MASK                     = 0x00000200
  3123  	TESTVFS_TRUNCATE_MASK                 = 0x00002000
  3124  	TESTVFS_UNLOCK_MASK                   = 0x00020000
  3125  	TESTVFS_WRITE_MASK                    = 0x00001000
  3126  )
  3127  
  3128  const (
  3129  	_PC_LINK_MAX           = 0
  3130  	_PC_MAX_CANON          = 1
  3131  	_PC_MAX_INPUT          = 2
  3132  	_PC_NAME_MAX           = 3
  3133  	_PC_PATH_MAX           = 4
  3134  	_PC_PIPE_BUF           = 5
  3135  	_PC_CHOWN_RESTRICTED   = 6
  3136  	_PC_NO_TRUNC           = 7
  3137  	_PC_VDISABLE           = 8
  3138  	_PC_SYNC_IO            = 9
  3139  	_PC_ASYNC_IO           = 10
  3140  	_PC_PRIO_IO            = 11
  3141  	_PC_SOCK_MAXBUF        = 12
  3142  	_PC_FILESIZEBITS       = 13
  3143  	_PC_REC_INCR_XFER_SIZE = 14
  3144  	_PC_REC_MAX_XFER_SIZE  = 15
  3145  	_PC_REC_MIN_XFER_SIZE  = 16
  3146  	_PC_REC_XFER_ALIGN     = 17
  3147  	_PC_ALLOC_SIZE_MIN     = 18
  3148  	_PC_SYMLINK_MAX        = 19
  3149  	_PC_2_SYMLINKS         = 20
  3150  )
  3151  
  3152  const (
  3153  	_CS_PATH = 0
  3154  
  3155  	_CS_V6_WIDTH_RESTRICTED_ENVS = 1
  3156  
  3157  	_CS_GNU_LIBC_VERSION       = 2
  3158  	_CS_GNU_LIBPTHREAD_VERSION = 3
  3159  
  3160  	_CS_V5_WIDTH_RESTRICTED_ENVS = 4
  3161  
  3162  	_CS_V7_WIDTH_RESTRICTED_ENVS = 5
  3163  
  3164  	_CS_LFS_CFLAGS      = 1000
  3165  	_CS_LFS_LDFLAGS     = 1001
  3166  	_CS_LFS_LIBS        = 1002
  3167  	_CS_LFS_LINTFLAGS   = 1003
  3168  	_CS_LFS64_CFLAGS    = 1004
  3169  	_CS_LFS64_LDFLAGS   = 1005
  3170  	_CS_LFS64_LIBS      = 1006
  3171  	_CS_LFS64_LINTFLAGS = 1007
  3172  
  3173  	_CS_XBS5_ILP32_OFF32_CFLAGS     = 1100
  3174  	_CS_XBS5_ILP32_OFF32_LDFLAGS    = 1101
  3175  	_CS_XBS5_ILP32_OFF32_LIBS       = 1102
  3176  	_CS_XBS5_ILP32_OFF32_LINTFLAGS  = 1103
  3177  	_CS_XBS5_ILP32_OFFBIG_CFLAGS    = 1104
  3178  	_CS_XBS5_ILP32_OFFBIG_LDFLAGS   = 1105
  3179  	_CS_XBS5_ILP32_OFFBIG_LIBS      = 1106
  3180  	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107
  3181  	_CS_XBS5_LP64_OFF64_CFLAGS      = 1108
  3182  	_CS_XBS5_LP64_OFF64_LDFLAGS     = 1109
  3183  	_CS_XBS5_LP64_OFF64_LIBS        = 1110
  3184  	_CS_XBS5_LP64_OFF64_LINTFLAGS   = 1111
  3185  	_CS_XBS5_LPBIG_OFFBIG_CFLAGS    = 1112
  3186  	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS   = 1113
  3187  	_CS_XBS5_LPBIG_OFFBIG_LIBS      = 1114
  3188  	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115
  3189  
  3190  	_CS_POSIX_V6_ILP32_OFF32_CFLAGS     = 1116
  3191  	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS    = 1117
  3192  	_CS_POSIX_V6_ILP32_OFF32_LIBS       = 1118
  3193  	_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS  = 1119
  3194  	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS    = 1120
  3195  	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS   = 1121
  3196  	_CS_POSIX_V6_ILP32_OFFBIG_LIBS      = 1122
  3197  	_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123
  3198  	_CS_POSIX_V6_LP64_OFF64_CFLAGS      = 1124
  3199  	_CS_POSIX_V6_LP64_OFF64_LDFLAGS     = 1125
  3200  	_CS_POSIX_V6_LP64_OFF64_LIBS        = 1126
  3201  	_CS_POSIX_V6_LP64_OFF64_LINTFLAGS   = 1127
  3202  	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS    = 1128
  3203  	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS   = 1129
  3204  	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS      = 1130
  3205  	_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131
  3206  
  3207  	_CS_POSIX_V7_ILP32_OFF32_CFLAGS     = 1132
  3208  	_CS_POSIX_V7_ILP32_OFF32_LDFLAGS    = 1133
  3209  	_CS_POSIX_V7_ILP32_OFF32_LIBS       = 1134
  3210  	_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS  = 1135
  3211  	_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS    = 1136
  3212  	_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS   = 1137
  3213  	_CS_POSIX_V7_ILP32_OFFBIG_LIBS      = 1138
  3214  	_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139
  3215  	_CS_POSIX_V7_LP64_OFF64_CFLAGS      = 1140
  3216  	_CS_POSIX_V7_LP64_OFF64_LDFLAGS     = 1141
  3217  	_CS_POSIX_V7_LP64_OFF64_LIBS        = 1142
  3218  	_CS_POSIX_V7_LP64_OFF64_LINTFLAGS   = 1143
  3219  	_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS    = 1144
  3220  	_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS   = 1145
  3221  	_CS_POSIX_V7_LPBIG_OFFBIG_LIBS      = 1146
  3222  	_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147
  3223  
  3224  	_CS_V6_ENV = 1148
  3225  	_CS_V7_ENV = 1149
  3226  )
  3227  
  3228  const (
  3229  	_SC_ARG_MAX               = 0
  3230  	_SC_CHILD_MAX             = 1
  3231  	_SC_CLK_TCK               = 2
  3232  	_SC_NGROUPS_MAX           = 3
  3233  	_SC_OPEN_MAX              = 4
  3234  	_SC_STREAM_MAX            = 5
  3235  	_SC_TZNAME_MAX            = 6
  3236  	_SC_JOB_CONTROL           = 7
  3237  	_SC_SAVED_IDS             = 8
  3238  	_SC_REALTIME_SIGNALS      = 9
  3239  	_SC_PRIORITY_SCHEDULING   = 10
  3240  	_SC_TIMERS                = 11
  3241  	_SC_ASYNCHRONOUS_IO       = 12
  3242  	_SC_PRIORITIZED_IO        = 13
  3243  	_SC_SYNCHRONIZED_IO       = 14
  3244  	_SC_FSYNC                 = 15
  3245  	_SC_MAPPED_FILES          = 16
  3246  	_SC_MEMLOCK               = 17
  3247  	_SC_MEMLOCK_RANGE         = 18
  3248  	_SC_MEMORY_PROTECTION     = 19
  3249  	_SC_MESSAGE_PASSING       = 20
  3250  	_SC_SEMAPHORES            = 21
  3251  	_SC_SHARED_MEMORY_OBJECTS = 22
  3252  	_SC_AIO_LISTIO_MAX        = 23
  3253  	_SC_AIO_MAX               = 24
  3254  	_SC_AIO_PRIO_DELTA_MAX    = 25
  3255  	_SC_DELAYTIMER_MAX        = 26
  3256  	_SC_MQ_OPEN_MAX           = 27
  3257  	_SC_MQ_PRIO_MAX           = 28
  3258  	_SC_VERSION               = 29
  3259  	_SC_PAGESIZE              = 30
  3260  	_SC_RTSIG_MAX             = 31
  3261  	_SC_SEM_NSEMS_MAX         = 32
  3262  	_SC_SEM_VALUE_MAX         = 33
  3263  	_SC_SIGQUEUE_MAX          = 34
  3264  	_SC_TIMER_MAX             = 35
  3265  
  3266  	_SC_BC_BASE_MAX        = 36
  3267  	_SC_BC_DIM_MAX         = 37
  3268  	_SC_BC_SCALE_MAX       = 38
  3269  	_SC_BC_STRING_MAX      = 39
  3270  	_SC_COLL_WEIGHTS_MAX   = 40
  3271  	_SC_EQUIV_CLASS_MAX    = 41
  3272  	_SC_EXPR_NEST_MAX      = 42
  3273  	_SC_LINE_MAX           = 43
  3274  	_SC_RE_DUP_MAX         = 44
  3275  	_SC_CHARCLASS_NAME_MAX = 45
  3276  
  3277  	_SC_2_VERSION   = 46
  3278  	_SC_2_C_BIND    = 47
  3279  	_SC_2_C_DEV     = 48
  3280  	_SC_2_FORT_DEV  = 49
  3281  	_SC_2_FORT_RUN  = 50
  3282  	_SC_2_SW_DEV    = 51
  3283  	_SC_2_LOCALEDEF = 52
  3284  
  3285  	_SC_PII                 = 53
  3286  	_SC_PII_XTI             = 54
  3287  	_SC_PII_SOCKET          = 55
  3288  	_SC_PII_INTERNET        = 56
  3289  	_SC_PII_OSI             = 57
  3290  	_SC_POLL                = 58
  3291  	_SC_SELECT              = 59
  3292  	_SC_UIO_MAXIOV          = 60
  3293  	_SC_IOV_MAX             = 60
  3294  	_SC_PII_INTERNET_STREAM = 61
  3295  	_SC_PII_INTERNET_DGRAM  = 62
  3296  	_SC_PII_OSI_COTS        = 63
  3297  	_SC_PII_OSI_CLTS        = 64
  3298  	_SC_PII_OSI_M           = 65
  3299  	_SC_T_IOV_MAX           = 66
  3300  
  3301  	_SC_THREADS                      = 67
  3302  	_SC_THREAD_SAFE_FUNCTIONS        = 68
  3303  	_SC_GETGR_R_SIZE_MAX             = 69
  3304  	_SC_GETPW_R_SIZE_MAX             = 70
  3305  	_SC_LOGIN_NAME_MAX               = 71
  3306  	_SC_TTY_NAME_MAX                 = 72
  3307  	_SC_THREAD_DESTRUCTOR_ITERATIONS = 73
  3308  	_SC_THREAD_KEYS_MAX              = 74
  3309  	_SC_THREAD_STACK_MIN             = 75
  3310  	_SC_THREAD_THREADS_MAX           = 76
  3311  	_SC_THREAD_ATTR_STACKADDR        = 77
  3312  	_SC_THREAD_ATTR_STACKSIZE        = 78
  3313  	_SC_THREAD_PRIORITY_SCHEDULING   = 79
  3314  	_SC_THREAD_PRIO_INHERIT          = 80
  3315  	_SC_THREAD_PRIO_PROTECT          = 81
  3316  	_SC_THREAD_PROCESS_SHARED        = 82
  3317  
  3318  	_SC_NPROCESSORS_CONF = 83
  3319  	_SC_NPROCESSORS_ONLN = 84
  3320  	_SC_PHYS_PAGES       = 85
  3321  	_SC_AVPHYS_PAGES     = 86
  3322  	_SC_ATEXIT_MAX       = 87
  3323  	_SC_PASS_MAX         = 88
  3324  
  3325  	_SC_XOPEN_VERSION     = 89
  3326  	_SC_XOPEN_XCU_VERSION = 90
  3327  	_SC_XOPEN_UNIX        = 91
  3328  	_SC_XOPEN_CRYPT       = 92
  3329  	_SC_XOPEN_ENH_I18N    = 93
  3330  	_SC_XOPEN_SHM         = 94
  3331  
  3332  	_SC_2_CHAR_TERM = 95
  3333  	_SC_2_C_VERSION = 96
  3334  	_SC_2_UPE       = 97
  3335  
  3336  	_SC_XOPEN_XPG2 = 98
  3337  	_SC_XOPEN_XPG3 = 99
  3338  	_SC_XOPEN_XPG4 = 100
  3339  
  3340  	_SC_CHAR_BIT   = 101
  3341  	_SC_CHAR_MAX   = 102
  3342  	_SC_CHAR_MIN   = 103
  3343  	_SC_INT_MAX    = 104
  3344  	_SC_INT_MIN    = 105
  3345  	_SC_LONG_BIT   = 106
  3346  	_SC_WORD_BIT   = 107
  3347  	_SC_MB_LEN_MAX = 108
  3348  	_SC_NZERO      = 109
  3349  	_SC_SSIZE_MAX  = 110
  3350  	_SC_SCHAR_MAX  = 111
  3351  	_SC_SCHAR_MIN  = 112
  3352  	_SC_SHRT_MAX   = 113
  3353  	_SC_SHRT_MIN   = 114
  3354  	_SC_UCHAR_MAX  = 115
  3355  	_SC_UINT_MAX   = 116
  3356  	_SC_ULONG_MAX  = 117
  3357  	_SC_USHRT_MAX  = 118
  3358  
  3359  	_SC_NL_ARGMAX  = 119
  3360  	_SC_NL_LANGMAX = 120
  3361  	_SC_NL_MSGMAX  = 121
  3362  	_SC_NL_NMAX    = 122
  3363  	_SC_NL_SETMAX  = 123
  3364  	_SC_NL_TEXTMAX = 124
  3365  
  3366  	_SC_XBS5_ILP32_OFF32  = 125
  3367  	_SC_XBS5_ILP32_OFFBIG = 126
  3368  	_SC_XBS5_LP64_OFF64   = 127
  3369  	_SC_XBS5_LPBIG_OFFBIG = 128
  3370  
  3371  	_SC_XOPEN_LEGACY           = 129
  3372  	_SC_XOPEN_REALTIME         = 130
  3373  	_SC_XOPEN_REALTIME_THREADS = 131
  3374  
  3375  	_SC_ADVISORY_INFO          = 132
  3376  	_SC_BARRIERS               = 133
  3377  	_SC_BASE                   = 134
  3378  	_SC_C_LANG_SUPPORT         = 135
  3379  	_SC_C_LANG_SUPPORT_R       = 136
  3380  	_SC_CLOCK_SELECTION        = 137
  3381  	_SC_CPUTIME                = 138
  3382  	_SC_THREAD_CPUTIME         = 139
  3383  	_SC_DEVICE_IO              = 140
  3384  	_SC_DEVICE_SPECIFIC        = 141
  3385  	_SC_DEVICE_SPECIFIC_R      = 142
  3386  	_SC_FD_MGMT                = 143
  3387  	_SC_FIFO                   = 144
  3388  	_SC_PIPE                   = 145
  3389  	_SC_FILE_ATTRIBUTES        = 146
  3390  	_SC_FILE_LOCKING           = 147
  3391  	_SC_FILE_SYSTEM            = 148
  3392  	_SC_MONOTONIC_CLOCK        = 149
  3393  	_SC_MULTI_PROCESS          = 150
  3394  	_SC_SINGLE_PROCESS         = 151
  3395  	_SC_NETWORKING             = 152
  3396  	_SC_READER_WRITER_LOCKS    = 153
  3397  	_SC_SPIN_LOCKS             = 154
  3398  	_SC_REGEXP                 = 155
  3399  	_SC_REGEX_VERSION          = 156
  3400  	_SC_SHELL                  = 157
  3401  	_SC_SIGNALS                = 158
  3402  	_SC_SPAWN                  = 159
  3403  	_SC_SPORADIC_SERVER        = 160
  3404  	_SC_THREAD_SPORADIC_SERVER = 161
  3405  	_SC_SYSTEM_DATABASE        = 162
  3406  	_SC_SYSTEM_DATABASE_R      = 163
  3407  	_SC_TIMEOUTS               = 164
  3408  	_SC_TYPED_MEMORY_OBJECTS   = 165
  3409  	_SC_USER_GROUPS            = 166
  3410  	_SC_USER_GROUPS_R          = 167
  3411  	_SC_2_PBS                  = 168
  3412  	_SC_2_PBS_ACCOUNTING       = 169
  3413  	_SC_2_PBS_LOCATE           = 170
  3414  	_SC_2_PBS_MESSAGE          = 171
  3415  	_SC_2_PBS_TRACK            = 172
  3416  	_SC_SYMLOOP_MAX            = 173
  3417  	_SC_STREAMS                = 174
  3418  	_SC_2_PBS_CHECKPOINT       = 175
  3419  
  3420  	_SC_V6_ILP32_OFF32  = 176
  3421  	_SC_V6_ILP32_OFFBIG = 177
  3422  	_SC_V6_LP64_OFF64   = 178
  3423  	_SC_V6_LPBIG_OFFBIG = 179
  3424  
  3425  	_SC_HOST_NAME_MAX      = 180
  3426  	_SC_TRACE              = 181
  3427  	_SC_TRACE_EVENT_FILTER = 182
  3428  	_SC_TRACE_INHERIT      = 183
  3429  	_SC_TRACE_LOG          = 184
  3430  
  3431  	_SC_LEVEL1_ICACHE_SIZE     = 185
  3432  	_SC_LEVEL1_ICACHE_ASSOC    = 186
  3433  	_SC_LEVEL1_ICACHE_LINESIZE = 187
  3434  	_SC_LEVEL1_DCACHE_SIZE     = 188
  3435  	_SC_LEVEL1_DCACHE_ASSOC    = 189
  3436  	_SC_LEVEL1_DCACHE_LINESIZE = 190
  3437  	_SC_LEVEL2_CACHE_SIZE      = 191
  3438  	_SC_LEVEL2_CACHE_ASSOC     = 192
  3439  	_SC_LEVEL2_CACHE_LINESIZE  = 193
  3440  	_SC_LEVEL3_CACHE_SIZE      = 194
  3441  	_SC_LEVEL3_CACHE_ASSOC     = 195
  3442  	_SC_LEVEL3_CACHE_LINESIZE  = 196
  3443  	_SC_LEVEL4_CACHE_SIZE      = 197
  3444  	_SC_LEVEL4_CACHE_ASSOC     = 198
  3445  	_SC_LEVEL4_CACHE_LINESIZE  = 199
  3446  
  3447  	_SC_IPV6        = 235
  3448  	_SC_RAW_SOCKETS = 236
  3449  
  3450  	_SC_V7_ILP32_OFF32  = 237
  3451  	_SC_V7_ILP32_OFFBIG = 238
  3452  	_SC_V7_LP64_OFF64   = 239
  3453  	_SC_V7_LPBIG_OFFBIG = 240
  3454  
  3455  	_SC_SS_REPL_MAX = 241
  3456  
  3457  	_SC_TRACE_EVENT_NAME_MAX = 242
  3458  	_SC_TRACE_NAME_MAX       = 243
  3459  	_SC_TRACE_SYS_MAX        = 244
  3460  	_SC_TRACE_USER_EVENT_MAX = 245
  3461  
  3462  	_SC_XOPEN_STREAMS = 246
  3463  
  3464  	_SC_THREAD_ROBUST_PRIO_INHERIT = 247
  3465  	_SC_THREAD_ROBUST_PRIO_PROTECT = 248
  3466  )
  3467  
  3468  const (
  3469  	F_OWNER_TID  = 0
  3470  	F_OWNER_PID  = 1
  3471  	F_OWNER_PGRP = 2
  3472  	F_OWNER_GID  = 2
  3473  )
  3474  
  3475  const (
  3476  	RUSAGE_SELF = 0
  3477  
  3478  	RUSAGE_CHILDREN = -1
  3479  )
  3480  
  3481  const (
  3482  	RUSAGE_THREAD = 1
  3483  )
  3484  
  3485  const (
  3486  	PRIO_PROCESS = 0
  3487  	PRIO_PGRP    = 1
  3488  	PRIO_USER    = 2
  3489  )
  3490  
  3491  const (
  3492  	RLIMIT_CPU = 0
  3493  
  3494  	RLIMIT_FSIZE = 1
  3495  
  3496  	RLIMIT_DATA = 2
  3497  
  3498  	RLIMIT_STACK = 3
  3499  
  3500  	RLIMIT_CORE = 4
  3501  
  3502  	__RLIMIT_RSS = 5
  3503  
  3504  	RLIMIT_NOFILE  = 7
  3505  	__RLIMIT_OFILE = 7
  3506  
  3507  	RLIMIT_AS = 9
  3508  
  3509  	__RLIMIT_NPROC = 6
  3510  
  3511  	__RLIMIT_MEMLOCK = 8
  3512  
  3513  	__RLIMIT_LOCKS = 10
  3514  
  3515  	__RLIMIT_SIGPENDING = 11
  3516  
  3517  	__RLIMIT_MSGQUEUE = 12
  3518  
  3519  	__RLIMIT_NICE = 13
  3520  
  3521  	__RLIMIT_RTPRIO = 14
  3522  
  3523  	__RLIMIT_RTTIME = 15
  3524  
  3525  	__RLIMIT_NLIMITS = 16
  3526  	__RLIM_NLIMITS   = 16
  3527  )
  3528  
  3529  const (
  3530  	SIGEV_SIGNAL = 0
  3531  	SIGEV_NONE   = 1
  3532  	SIGEV_THREAD = 2
  3533  
  3534  	SIGEV_THREAD_ID = 4
  3535  )
  3536  
  3537  const (
  3538  	SEGV_MAPERR  = 1
  3539  	SEGV_ACCERR  = 2
  3540  	SEGV_BNDERR  = 3
  3541  	SEGV_PKUERR  = 4
  3542  	SEGV_ACCADI  = 5
  3543  	SEGV_ADIDERR = 6
  3544  	SEGV_ADIPERR = 7
  3545  )
  3546  
  3547  const (
  3548  	BUS_ADRALN    = 1
  3549  	BUS_ADRERR    = 2
  3550  	BUS_OBJERR    = 3
  3551  	BUS_MCEERR_AR = 4
  3552  	BUS_MCEERR_AO = 5
  3553  )
  3554  
  3555  const (
  3556  	CLD_EXITED    = 1
  3557  	CLD_KILLED    = 2
  3558  	CLD_DUMPED    = 3
  3559  	CLD_TRAPPED   = 4
  3560  	CLD_STOPPED   = 5
  3561  	CLD_CONTINUED = 6
  3562  )
  3563  
  3564  const (
  3565  	POLL_IN  = 1
  3566  	POLL_OUT = 2
  3567  	POLL_MSG = 3
  3568  	POLL_ERR = 4
  3569  	POLL_PRI = 5
  3570  	POLL_HUP = 6
  3571  )
  3572  
  3573  const (
  3574  	SI_ASYNCNL  = -60
  3575  	SI_DETHREAD = -7
  3576  
  3577  	SI_TKILL   = -6
  3578  	SI_SIGIO   = -5
  3579  	SI_ASYNCIO = -4
  3580  	SI_MESGQ   = -3
  3581  	SI_TIMER   = -2
  3582  	SI_QUEUE   = -1
  3583  	SI_USER    = 0
  3584  	SI_KERNEL  = 128
  3585  )
  3586  
  3587  const (
  3588  	ILL_ILLOPC   = 1
  3589  	ILL_ILLOPN   = 2
  3590  	ILL_ILLADR   = 3
  3591  	ILL_ILLTRP   = 4
  3592  	ILL_PRVOPC   = 5
  3593  	ILL_PRVREG   = 6
  3594  	ILL_COPROC   = 7
  3595  	ILL_BADSTK   = 8
  3596  	ILL_BADIADDR = 9
  3597  )
  3598  
  3599  const (
  3600  	FPE_INTDIV   = 1
  3601  	FPE_INTOVF   = 2
  3602  	FPE_FLTDIV   = 3
  3603  	FPE_FLTOVF   = 4
  3604  	FPE_FLTUND   = 5
  3605  	FPE_FLTRES   = 6
  3606  	FPE_FLTINV   = 7
  3607  	FPE_FLTSUB   = 8
  3608  	FPE_FLTUNK   = 14
  3609  	FPE_CONDTRAP = 15
  3610  )
  3611  
  3612  const (
  3613  	SS_ONSTACK = 1
  3614  	SS_DISABLE = 2
  3615  )
  3616  
  3617  const (
  3618  	P_ALL  = 0
  3619  	P_PID  = 1
  3620  	P_PGID = 2
  3621  )
  3622  
  3623  const (
  3624  	_ISupper  = 256
  3625  	_ISlower  = 512
  3626  	_ISalpha  = 1024
  3627  	_ISdigit  = 2048
  3628  	_ISxdigit = 4096
  3629  	_ISspace  = 8192
  3630  	_ISprint  = 16384
  3631  	_ISgraph  = 32768
  3632  	_ISblank  = 1
  3633  	_IScntrl  = 2
  3634  	_ISpunct  = 4
  3635  	_ISalnum  = 8
  3636  )
  3637  
  3638  const (
  3639  	DT_UNKNOWN = 0
  3640  	DT_FIFO    = 1
  3641  	DT_CHR     = 2
  3642  	DT_DIR     = 4
  3643  	DT_BLK     = 6
  3644  	DT_REG     = 8
  3645  	DT_LNK     = 10
  3646  	DT_SOCK    = 12
  3647  	DT_WHT     = 14
  3648  )
  3649  
  3650  const (
  3651  	PTHREAD_RWLOCK_PREFER_READER_NP              = 0
  3652  	PTHREAD_RWLOCK_PREFER_WRITER_NP              = 1
  3653  	PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP = 2
  3654  	PTHREAD_RWLOCK_DEFAULT_NP                    = 0
  3655  )
  3656  
  3657  const (
  3658  	PTHREAD_INHERIT_SCHED  = 0
  3659  	PTHREAD_EXPLICIT_SCHED = 1
  3660  )
  3661  
  3662  const (
  3663  	PTHREAD_SCOPE_SYSTEM  = 0
  3664  	PTHREAD_SCOPE_PROCESS = 1
  3665  )
  3666  
  3667  const (
  3668  	PTHREAD_PROCESS_PRIVATE = 0
  3669  	PTHREAD_PROCESS_SHARED  = 1
  3670  )
  3671  
  3672  const (
  3673  	PTHREAD_CANCEL_ENABLE  = 0
  3674  	PTHREAD_CANCEL_DISABLE = 1
  3675  )
  3676  const (
  3677  	PTHREAD_CANCEL_DEFERRED     = 0
  3678  	PTHREAD_CANCEL_ASYNCHRONOUS = 1
  3679  )
  3680  
  3681  const (
  3682  	PTHREAD_CREATE_JOINABLE = 0
  3683  	PTHREAD_CREATE_DETACHED = 1
  3684  )
  3685  
  3686  const (
  3687  	PTHREAD_MUTEX_TIMED_NP      = 0
  3688  	PTHREAD_MUTEX_RECURSIVE_NP  = 1
  3689  	PTHREAD_MUTEX_ERRORCHECK_NP = 2
  3690  	PTHREAD_MUTEX_ADAPTIVE_NP   = 3
  3691  	PTHREAD_MUTEX_NORMAL        = 0
  3692  	PTHREAD_MUTEX_RECURSIVE     = 1
  3693  	PTHREAD_MUTEX_ERRORCHECK    = 2
  3694  	PTHREAD_MUTEX_DEFAULT       = 0
  3695  	PTHREAD_MUTEX_FAST_NP       = 0
  3696  )
  3697  
  3698  const (
  3699  	PTHREAD_MUTEX_STALLED    = 0
  3700  	PTHREAD_MUTEX_STALLED_NP = 0
  3701  	PTHREAD_MUTEX_ROBUST     = 1
  3702  	PTHREAD_MUTEX_ROBUST_NP  = 1
  3703  )
  3704  
  3705  const (
  3706  	PTHREAD_PRIO_NONE    = 0
  3707  	PTHREAD_PRIO_INHERIT = 1
  3708  	PTHREAD_PRIO_PROTECT = 2
  3709  )
  3710  
  3711  const (
  3712  	ITIMER_REAL = 0
  3713  
  3714  	ITIMER_VIRTUAL = 1
  3715  
  3716  	ITIMER_PROF = 2
  3717  )
  3718  
  3719  const (
  3720  	TCL_QUEUE_TAIL = 0
  3721  	TCL_QUEUE_HEAD = 1
  3722  	TCL_QUEUE_MARK = 2
  3723  )
  3724  
  3725  const (
  3726  	TCL_PATH_ABSOLUTE        = 0
  3727  	TCL_PATH_RELATIVE        = 1
  3728  	TCL_PATH_VOLUME_RELATIVE = 2
  3729  )
  3730  
  3731  const (
  3732  	TCL_INT      = 0
  3733  	TCL_DOUBLE   = 1
  3734  	TCL_EITHER   = 2
  3735  	TCL_WIDE_INT = 3
  3736  )
  3737  
  3738  type ptrdiff_t = int64
  3739  
  3740  type size_t = uint64
  3741  
  3742  type wchar_t = uint32
  3743  
  3744  type va_list = uintptr
  3745  
  3746  type sqlite32 = struct {
  3747  	FpVfs                   uintptr
  3748  	FpVdbe                  uintptr
  3749  	FpDfltColl              uintptr
  3750  	Fmutex                  uintptr
  3751  	FaDb                    uintptr
  3752  	FnDb                    int32
  3753  	FmDbFlags               u32
  3754  	Fflags                  u64
  3755  	FlastRowid              i64
  3756  	FszMmap                 i64
  3757  	FnSchemaLock            u32
  3758  	FopenFlags              uint32
  3759  	FerrCode                int32
  3760  	FerrByteOffset          int32
  3761  	FerrMask                int32
  3762  	FiSysErrno              int32
  3763  	FdbOptFlags             u32
  3764  	Fenc                    u8
  3765  	FautoCommit             u8
  3766  	Ftemp_store             u8
  3767  	FmallocFailed           u8
  3768  	FbBenignMalloc          u8
  3769  	FdfltLockMode           u8
  3770  	FnextAutovac            int8
  3771  	FsuppressErr            u8
  3772  	FvtabOnConflict         u8
  3773  	FisTransactionSavepoint u8
  3774  	FmTrace                 u8
  3775  	FnoSharedCache          u8
  3776  	FnSqlExec               u8
  3777  	FeOpenState             u8
  3778  	F__ccgo_pad1            [2]byte
  3779  	FnextPagesize           int32
  3780  	FnChange                i64
  3781  	FnTotalChange           i64
  3782  	FaLimit                 [12]int32
  3783  	FnMaxSorterMmap         int32
  3784  	F__ccgo_pad2            [4]byte
  3785  	Finit                   struct {
  3786  		FnewTnum       Pgno
  3787  		FiDb           u8
  3788  		Fbusy          u8
  3789  		F__ccgo_pad1   [2]byte
  3790  		ForphanTrigger uint8
  3791  		F__ccgo_pad2   [7]byte
  3792  		FazInit        uintptr
  3793  	}
  3794  	FnVdbeActive        int32
  3795  	FnVdbeRead          int32
  3796  	FnVdbeWrite         int32
  3797  	FnVdbeExec          int32
  3798  	FnVDestroy          int32
  3799  	FnExtension         int32
  3800  	FaExtension         uintptr
  3801  	Ftrace              struct{ FxLegacy uintptr }
  3802  	FpTraceArg          uintptr
  3803  	FxProfile           uintptr
  3804  	FpProfileArg        uintptr
  3805  	FpCommitArg         uintptr
  3806  	FxCommitCallback    uintptr
  3807  	FpRollbackArg       uintptr
  3808  	FxRollbackCallback  uintptr
  3809  	FpUpdateArg         uintptr
  3810  	FxUpdateCallback    uintptr
  3811  	FpAutovacPagesArg   uintptr
  3812  	FxAutovacDestr      uintptr
  3813  	FxAutovacPages      uintptr
  3814  	FpParse             uintptr
  3815  	FpPreUpdateArg      uintptr
  3816  	FxPreUpdateCallback uintptr
  3817  	FpPreUpdate         uintptr
  3818  	FxWalCallback       uintptr
  3819  	FpWalArg            uintptr
  3820  	FxCollNeeded        uintptr
  3821  	FxCollNeeded16      uintptr
  3822  	FpCollNeededArg     uintptr
  3823  	FpErr               uintptr
  3824  	Fu1                 struct {
  3825  		F__ccgo_pad1   [0]uint64
  3826  		FisInterrupted int32
  3827  		F__ccgo_pad2   [4]byte
  3828  	}
  3829  	Flookaside           Lookaside
  3830  	FxAuth               sqlite3_xauth
  3831  	FpAuthArg            uintptr
  3832  	FxProgress           uintptr
  3833  	FpProgressArg        uintptr
  3834  	FnProgressOps        uint32
  3835  	FnVTrans             int32
  3836  	FaModule             Hash
  3837  	FpVtabCtx            uintptr
  3838  	FaVTrans             uintptr
  3839  	FpDisconnect         uintptr
  3840  	FaFunc               Hash
  3841  	FaCollSeq            Hash
  3842  	FbusyHandler         BusyHandler
  3843  	FaDbStatic           [2]Db
  3844  	FpSavepoint          uintptr
  3845  	FnAnalysisLimit      int32
  3846  	FbusyTimeout         int32
  3847  	FnSavepoint          int32
  3848  	FnStatement          int32
  3849  	FnDeferredCons       i64
  3850  	FnDeferredImmCons    i64
  3851  	FpnBytesFreed        uintptr
  3852  	FpBlockingConnection uintptr
  3853  	FpUnlockConnection   uintptr
  3854  	FpUnlockArg          uintptr
  3855  	FxUnlockNotify       uintptr
  3856  	FpNextBlocked        uintptr
  3857  }
  3858  
  3859  type sqlite_int64 = int64
  3860  type sqlite_uint64 = uint64
  3861  type sqlite3_int64 = sqlite_int64
  3862  type sqlite3_uint64 = sqlite_uint64
  3863  
  3864  type sqlite3_callback = uintptr
  3865  
  3866  type sqlite3_file1 = struct{ FpMethods uintptr }
  3867  
  3868  type sqlite3_file = sqlite3_file1
  3869  type sqlite3_io_methods1 = struct {
  3870  	FiVersion               int32
  3871  	F__ccgo_pad1            [4]byte
  3872  	FxClose                 uintptr
  3873  	FxRead                  uintptr
  3874  	FxWrite                 uintptr
  3875  	FxTruncate              uintptr
  3876  	FxSync                  uintptr
  3877  	FxFileSize              uintptr
  3878  	FxLock                  uintptr
  3879  	FxUnlock                uintptr
  3880  	FxCheckReservedLock     uintptr
  3881  	FxFileControl           uintptr
  3882  	FxSectorSize            uintptr
  3883  	FxDeviceCharacteristics uintptr
  3884  	FxShmMap                uintptr
  3885  	FxShmLock               uintptr
  3886  	FxShmBarrier            uintptr
  3887  	FxShmUnmap              uintptr
  3888  	FxFetch                 uintptr
  3889  	FxUnfetch               uintptr
  3890  }
  3891  
  3892  type sqlite3_io_methods = sqlite3_io_methods1
  3893  
  3894  type sqlite3_mutex1 = struct {
  3895  	FpReal       uintptr
  3896  	FeType       int32
  3897  	F__ccgo_pad1 [4]byte
  3898  }
  3899  
  3900  type sqlite3_api_routines1 = struct {
  3901  	Faggregate_context      uintptr
  3902  	Faggregate_count        uintptr
  3903  	Fbind_blob              uintptr
  3904  	Fbind_double            uintptr
  3905  	Fbind_int               uintptr
  3906  	Fbind_int64             uintptr
  3907  	Fbind_null              uintptr
  3908  	Fbind_parameter_count   uintptr
  3909  	Fbind_parameter_index   uintptr
  3910  	Fbind_parameter_name    uintptr
  3911  	Fbind_text              uintptr
  3912  	Fbind_text16            uintptr
  3913  	Fbind_value             uintptr
  3914  	Fbusy_handler           uintptr
  3915  	Fbusy_timeout           uintptr
  3916  	Fchanges                uintptr
  3917  	Fclose                  uintptr
  3918  	Fcollation_needed       uintptr
  3919  	Fcollation_needed16     uintptr
  3920  	Fcolumn_blob            uintptr
  3921  	Fcolumn_bytes           uintptr
  3922  	Fcolumn_bytes16         uintptr
  3923  	Fcolumn_count           uintptr
  3924  	Fcolumn_database_name   uintptr
  3925  	Fcolumn_database_name16 uintptr
  3926  	Fcolumn_decltype        uintptr
  3927  	Fcolumn_decltype16      uintptr
  3928  	Fcolumn_double          uintptr
  3929  	Fcolumn_int             uintptr
  3930  	Fcolumn_int64           uintptr
  3931  	Fcolumn_name            uintptr
  3932  	Fcolumn_name16          uintptr
  3933  	Fcolumn_origin_name     uintptr
  3934  	Fcolumn_origin_name16   uintptr
  3935  	Fcolumn_table_name      uintptr
  3936  	Fcolumn_table_name16    uintptr
  3937  	Fcolumn_text            uintptr
  3938  	Fcolumn_text16          uintptr
  3939  	Fcolumn_type            uintptr
  3940  	Fcolumn_value           uintptr
  3941  	Fcommit_hook            uintptr
  3942  	Fcomplete               uintptr
  3943  	Fcomplete16             uintptr
  3944  	Fcreate_collation       uintptr
  3945  	Fcreate_collation16     uintptr
  3946  	Fcreate_function        uintptr
  3947  	Fcreate_function16      uintptr
  3948  	Fcreate_module          uintptr
  3949  	Fdata_count             uintptr
  3950  	Fdb_handle              uintptr
  3951  	Fdeclare_vtab           uintptr
  3952  	Fenable_shared_cache    uintptr
  3953  	Ferrcode                uintptr
  3954  	Ferrmsg                 uintptr
  3955  	Ferrmsg16               uintptr
  3956  	Fexec                   uintptr
  3957  	Fexpired                uintptr
  3958  	Ffinalize               uintptr
  3959  	Ffree                   uintptr
  3960  	Ffree_table             uintptr
  3961  	Fget_autocommit         uintptr
  3962  	Fget_auxdata            uintptr
  3963  	Fget_table              uintptr
  3964  	Fglobal_recover         uintptr
  3965  	Finterruptx             uintptr
  3966  	Flast_insert_rowid      uintptr
  3967  	Flibversion             uintptr
  3968  	Flibversion_number      uintptr
  3969  	Fmalloc                 uintptr
  3970  	Fmprintf                uintptr
  3971  	Fopen                   uintptr
  3972  	Fopen16                 uintptr
  3973  	Fprepare                uintptr
  3974  	Fprepare16              uintptr
  3975  	Fprofile                uintptr
  3976  	Fprogress_handler       uintptr
  3977  	Frealloc                uintptr
  3978  	Freset                  uintptr
  3979  	Fresult_blob            uintptr
  3980  	Fresult_double          uintptr
  3981  	Fresult_error           uintptr
  3982  	Fresult_error16         uintptr
  3983  	Fresult_int             uintptr
  3984  	Fresult_int64           uintptr
  3985  	Fresult_null            uintptr
  3986  	Fresult_text            uintptr
  3987  	Fresult_text16          uintptr
  3988  	Fresult_text16be        uintptr
  3989  	Fresult_text16le        uintptr
  3990  	Fresult_value           uintptr
  3991  	Frollback_hook          uintptr
  3992  	Fset_authorizer         uintptr
  3993  	Fset_auxdata            uintptr
  3994  	Fxsnprintf              uintptr
  3995  	Fstep                   uintptr
  3996  	Ftable_column_metadata  uintptr
  3997  	Fthread_cleanup         uintptr
  3998  	Ftotal_changes          uintptr
  3999  	Ftrace                  uintptr
  4000  	Ftransfer_bindings      uintptr
  4001  	Fupdate_hook            uintptr
  4002  	Fuser_data              uintptr
  4003  	Fvalue_blob             uintptr
  4004  	Fvalue_bytes            uintptr
  4005  	Fvalue_bytes16          uintptr
  4006  	Fvalue_double           uintptr
  4007  	Fvalue_int              uintptr
  4008  	Fvalue_int64            uintptr
  4009  	Fvalue_numeric_type     uintptr
  4010  	Fvalue_text             uintptr
  4011  	Fvalue_text16           uintptr
  4012  	Fvalue_text16be         uintptr
  4013  	Fvalue_text16le         uintptr
  4014  	Fvalue_type             uintptr
  4015  	Fvmprintf               uintptr
  4016  	Foverload_function      uintptr
  4017  	Fprepare_v2             uintptr
  4018  	Fprepare16_v2           uintptr
  4019  	Fclear_bindings         uintptr
  4020  	Fcreate_module_v2       uintptr
  4021  	Fbind_zeroblob          uintptr
  4022  	Fblob_bytes             uintptr
  4023  	Fblob_close             uintptr
  4024  	Fblob_open              uintptr
  4025  	Fblob_read              uintptr
  4026  	Fblob_write             uintptr
  4027  	Fcreate_collation_v2    uintptr
  4028  	Ffile_control           uintptr
  4029  	Fmemory_highwater       uintptr
  4030  	Fmemory_used            uintptr
  4031  	Fmutex_alloc            uintptr
  4032  	Fmutex_enter            uintptr
  4033  	Fmutex_free             uintptr
  4034  	Fmutex_leave            uintptr
  4035  	Fmutex_try              uintptr
  4036  	Fopen_v2                uintptr
  4037  	Frelease_memory         uintptr
  4038  	Fresult_error_nomem     uintptr
  4039  	Fresult_error_toobig    uintptr
  4040  	Fsleep                  uintptr
  4041  	Fsoft_heap_limit        uintptr
  4042  	Fvfs_find               uintptr
  4043  	Fvfs_register           uintptr
  4044  	Fvfs_unregister         uintptr
  4045  	Fxthreadsafe            uintptr
  4046  	Fresult_zeroblob        uintptr
  4047  	Fresult_error_code      uintptr
  4048  	Ftest_control           uintptr
  4049  	Frandomness             uintptr
  4050  	Fcontext_db_handle      uintptr
  4051  	Fextended_result_codes  uintptr
  4052  	Flimit                  uintptr
  4053  	Fnext_stmt              uintptr
  4054  	Fsql                    uintptr
  4055  	Fstatus                 uintptr
  4056  	Fbackup_finish          uintptr
  4057  	Fbackup_init            uintptr
  4058  	Fbackup_pagecount       uintptr
  4059  	Fbackup_remaining       uintptr
  4060  	Fbackup_step            uintptr
  4061  	Fcompileoption_get      uintptr
  4062  	Fcompileoption_used     uintptr
  4063  	Fcreate_function_v2     uintptr
  4064  	Fdb_config              uintptr
  4065  	Fdb_mutex               uintptr
  4066  	Fdb_status              uintptr
  4067  	Fextended_errcode       uintptr
  4068  	Flog                    uintptr
  4069  	Fsoft_heap_limit64      uintptr
  4070  	Fsourceid               uintptr
  4071  	Fstmt_status            uintptr
  4072  	Fstrnicmp               uintptr
  4073  	Funlock_notify          uintptr
  4074  	Fwal_autocheckpoint     uintptr
  4075  	Fwal_checkpoint         uintptr
  4076  	Fwal_hook               uintptr
  4077  	Fblob_reopen            uintptr
  4078  	Fvtab_config            uintptr
  4079  	Fvtab_on_conflict       uintptr
  4080  	Fclose_v2               uintptr
  4081  	Fdb_filename            uintptr
  4082  	Fdb_readonly            uintptr
  4083  	Fdb_release_memory      uintptr
  4084  	Ferrstr                 uintptr
  4085  	Fstmt_busy              uintptr
  4086  	Fstmt_readonly          uintptr
  4087  	Fstricmp                uintptr
  4088  	Furi_boolean            uintptr
  4089  	Furi_int64              uintptr
  4090  	Furi_parameter          uintptr
  4091  	Fxvsnprintf             uintptr
  4092  	Fwal_checkpoint_v2      uintptr
  4093  	Fauto_extension         uintptr
  4094  	Fbind_blob64            uintptr
  4095  	Fbind_text64            uintptr
  4096  	Fcancel_auto_extension  uintptr
  4097  	Fload_extension         uintptr
  4098  	Fmalloc64               uintptr
  4099  	Fmsize                  uintptr
  4100  	Frealloc64              uintptr
  4101  	Freset_auto_extension   uintptr
  4102  	Fresult_blob64          uintptr
  4103  	Fresult_text64          uintptr
  4104  	Fstrglob                uintptr
  4105  	Fvalue_dup              uintptr
  4106  	Fvalue_free             uintptr
  4107  	Fresult_zeroblob64      uintptr
  4108  	Fbind_zeroblob64        uintptr
  4109  	Fvalue_subtype          uintptr
  4110  	Fresult_subtype         uintptr
  4111  	Fstatus64               uintptr
  4112  	Fstrlike                uintptr
  4113  	Fdb_cacheflush          uintptr
  4114  	Fsystem_errno           uintptr
  4115  	Ftrace_v2               uintptr
  4116  	Fexpanded_sql           uintptr
  4117  	Fset_last_insert_rowid  uintptr
  4118  	Fprepare_v3             uintptr
  4119  	Fprepare16_v3           uintptr
  4120  	Fbind_pointer           uintptr
  4121  	Fresult_pointer         uintptr
  4122  	Fvalue_pointer          uintptr
  4123  	Fvtab_nochange          uintptr
  4124  	Fvalue_nochange         uintptr
  4125  	Fvtab_collation         uintptr
  4126  	Fkeyword_count          uintptr
  4127  	Fkeyword_name           uintptr
  4128  	Fkeyword_check          uintptr
  4129  	Fstr_new                uintptr
  4130  	Fstr_finish             uintptr
  4131  	Fstr_appendf            uintptr
  4132  	Fstr_vappendf           uintptr
  4133  	Fstr_append             uintptr
  4134  	Fstr_appendall          uintptr
  4135  	Fstr_appendchar         uintptr
  4136  	Fstr_reset              uintptr
  4137  	Fstr_errcode            uintptr
  4138  	Fstr_length             uintptr
  4139  	Fstr_value              uintptr
  4140  	Fcreate_window_function uintptr
  4141  	Fnormalized_sql         uintptr
  4142  	Fstmt_isexplain         uintptr
  4143  	Fvalue_frombind         uintptr
  4144  	Fdrop_modules           uintptr
  4145  	Fhard_heap_limit64      uintptr
  4146  	Furi_key                uintptr
  4147  	Ffilename_database      uintptr
  4148  	Ffilename_journal       uintptr
  4149  	Ffilename_wal           uintptr
  4150  	Fcreate_filename        uintptr
  4151  	Ffree_filename          uintptr
  4152  	Fdatabase_file_object   uintptr
  4153  	Ftxn_state              uintptr
  4154  	Fchanges64              uintptr
  4155  	Ftotal_changes64        uintptr
  4156  	Fautovacuum_pages       uintptr
  4157  	Ferror_offset           uintptr
  4158  	Fvtab_rhs_value         uintptr
  4159  	Fvtab_distinct          uintptr
  4160  	Fvtab_in                uintptr
  4161  	Fvtab_in_first          uintptr
  4162  	Fvtab_in_next           uintptr
  4163  	Fdeserialize            uintptr
  4164  	Fserialize              uintptr
  4165  	Fdb_name                uintptr
  4166  }
  4167  
  4168  type sqlite3_vfs1 = struct {
  4169  	FiVersion          int32
  4170  	FszOsFile          int32
  4171  	FmxPathname        int32
  4172  	F__ccgo_pad1       [4]byte
  4173  	FpNext             uintptr
  4174  	FzName             uintptr
  4175  	FpAppData          uintptr
  4176  	FxOpen             uintptr
  4177  	FxDelete           uintptr
  4178  	FxAccess           uintptr
  4179  	FxFullPathname     uintptr
  4180  	FxDlOpen           uintptr
  4181  	FxDlError          uintptr
  4182  	FxDlSym            uintptr
  4183  	FxDlClose          uintptr
  4184  	FxRandomness       uintptr
  4185  	FxSleep            uintptr
  4186  	FxCurrentTime      uintptr
  4187  	FxGetLastError     uintptr
  4188  	FxCurrentTimeInt64 uintptr
  4189  	FxSetSystemCall    uintptr
  4190  	FxGetSystemCall    uintptr
  4191  	FxNextSystemCall   uintptr
  4192  }
  4193  
  4194  type sqlite3_vfs = sqlite3_vfs1
  4195  type sqlite3_syscall_ptr = uintptr
  4196  
  4197  type sqlite3_mem_methods1 = struct {
  4198  	FxMalloc   uintptr
  4199  	FxFree     uintptr
  4200  	FxRealloc  uintptr
  4201  	FxSize     uintptr
  4202  	FxRoundup  uintptr
  4203  	FxInit     uintptr
  4204  	FxShutdown uintptr
  4205  	FpAppData  uintptr
  4206  }
  4207  
  4208  type sqlite3_mem_methods = sqlite3_mem_methods1
  4209  
  4210  type sqlite3_value1 = struct {
  4211  	Fu        struct{ Fr float64 }
  4212  	Fz        uintptr
  4213  	Fn        int32
  4214  	Fflags    u16
  4215  	Fenc      u8
  4216  	FeSubtype u8
  4217  	Fdb       uintptr
  4218  	FszMalloc int32
  4219  	FuTemp    u32
  4220  	FzMalloc  uintptr
  4221  	FxDel     uintptr
  4222  }
  4223  
  4224  type sqlite3_context1 = struct {
  4225  	FpOut        uintptr
  4226  	FpFunc       uintptr
  4227  	FpMem        uintptr
  4228  	FpVdbe       uintptr
  4229  	FiOp         int32
  4230  	FisError     int32
  4231  	Fenc         u8
  4232  	FskipFlag    u8
  4233  	Fargc        u8
  4234  	F__ccgo_pad1 [5]byte
  4235  	Fargv        [1]uintptr
  4236  }
  4237  
  4238  type sqlite3_destructor_type = uintptr
  4239  
  4240  type sqlite3_vtab1 = struct {
  4241  	FpModule     uintptr
  4242  	FnRef        int32
  4243  	F__ccgo_pad1 [4]byte
  4244  	FzErrMsg     uintptr
  4245  }
  4246  
  4247  type sqlite3_vtab = sqlite3_vtab1
  4248  type sqlite3_index_info1 = struct {
  4249  	FnConstraint      int32
  4250  	F__ccgo_pad1      [4]byte
  4251  	FaConstraint      uintptr
  4252  	FnOrderBy         int32
  4253  	F__ccgo_pad2      [4]byte
  4254  	FaOrderBy         uintptr
  4255  	FaConstraintUsage uintptr
  4256  	FidxNum           int32
  4257  	F__ccgo_pad3      [4]byte
  4258  	FidxStr           uintptr
  4259  	FneedToFreeIdxStr int32
  4260  	ForderByConsumed  int32
  4261  	FestimatedCost    float64
  4262  	FestimatedRows    sqlite3_int64
  4263  	FidxFlags         int32
  4264  	F__ccgo_pad4      [4]byte
  4265  	FcolUsed          sqlite3_uint64
  4266  }
  4267  
  4268  type sqlite3_index_info = sqlite3_index_info1
  4269  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  4270  
  4271  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  4272  type sqlite3_module1 = struct {
  4273  	FiVersion      int32
  4274  	F__ccgo_pad1   [4]byte
  4275  	FxCreate       uintptr
  4276  	FxConnect      uintptr
  4277  	FxBestIndex    uintptr
  4278  	FxDisconnect   uintptr
  4279  	FxDestroy      uintptr
  4280  	FxOpen         uintptr
  4281  	FxClose        uintptr
  4282  	FxFilter       uintptr
  4283  	FxNext         uintptr
  4284  	FxEof          uintptr
  4285  	FxColumn       uintptr
  4286  	FxRowid        uintptr
  4287  	FxUpdate       uintptr
  4288  	FxBegin        uintptr
  4289  	FxSync         uintptr
  4290  	FxCommit       uintptr
  4291  	FxRollback     uintptr
  4292  	FxFindFunction uintptr
  4293  	FxRename       uintptr
  4294  	FxSavepoint    uintptr
  4295  	FxRelease      uintptr
  4296  	FxRollbackTo   uintptr
  4297  	FxShadowName   uintptr
  4298  }
  4299  
  4300  type sqlite3_module = sqlite3_module1
  4301  
  4302  type sqlite3_index_constraint = struct {
  4303  	FiColumn     int32
  4304  	Fop          uint8
  4305  	Fusable      uint8
  4306  	F__ccgo_pad1 [2]byte
  4307  	FiTermOffset int32
  4308  }
  4309  
  4310  type sqlite3_index_orderby = struct {
  4311  	FiColumn     int32
  4312  	Fdesc        uint8
  4313  	F__ccgo_pad1 [3]byte
  4314  }
  4315  
  4316  type sqlite3_index_constraint_usage = struct {
  4317  	FargvIndex   int32
  4318  	Fomit        uint8
  4319  	F__ccgo_pad1 [3]byte
  4320  }
  4321  
  4322  type sqlite3_mutex_methods1 = struct {
  4323  	FxMutexInit    uintptr
  4324  	FxMutexEnd     uintptr
  4325  	FxMutexAlloc   uintptr
  4326  	FxMutexFree    uintptr
  4327  	FxMutexEnter   uintptr
  4328  	FxMutexTry     uintptr
  4329  	FxMutexLeave   uintptr
  4330  	FxMutexHeld    uintptr
  4331  	FxMutexNotheld uintptr
  4332  }
  4333  
  4334  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  4335  
  4336  type sqlite3_str1 = struct {
  4337  	Fdb          uintptr
  4338  	FzText       uintptr
  4339  	FnAlloc      u32
  4340  	FmxAlloc     u32
  4341  	FnChar       u32
  4342  	FaccError    u8
  4343  	FprintfFlags u8
  4344  	F__ccgo_pad1 [2]byte
  4345  }
  4346  
  4347  type sqlite3_pcache_page1 = struct {
  4348  	FpBuf   uintptr
  4349  	FpExtra uintptr
  4350  }
  4351  
  4352  type sqlite3_pcache_page = sqlite3_pcache_page1
  4353  
  4354  type sqlite3_pcache_methods21 = struct {
  4355  	FiVersion    int32
  4356  	F__ccgo_pad1 [4]byte
  4357  	FpArg        uintptr
  4358  	FxInit       uintptr
  4359  	FxShutdown   uintptr
  4360  	FxCreate     uintptr
  4361  	FxCachesize  uintptr
  4362  	FxPagecount  uintptr
  4363  	FxFetch      uintptr
  4364  	FxUnpin      uintptr
  4365  	FxRekey      uintptr
  4366  	FxTruncate   uintptr
  4367  	FxDestroy    uintptr
  4368  	FxShrink     uintptr
  4369  }
  4370  
  4371  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  4372  
  4373  type sqlite3_pcache_methods1 = struct {
  4374  	FpArg       uintptr
  4375  	FxInit      uintptr
  4376  	FxShutdown  uintptr
  4377  	FxCreate    uintptr
  4378  	FxCachesize uintptr
  4379  	FxPagecount uintptr
  4380  	FxFetch     uintptr
  4381  	FxUnpin     uintptr
  4382  	FxRekey     uintptr
  4383  	FxTruncate  uintptr
  4384  	FxDestroy   uintptr
  4385  }
  4386  
  4387  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  4388  
  4389  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  4390  
  4391  type sqlite3_snapshot = sqlite3_snapshot1
  4392  
  4393  type sqlite3_rtree_geometry1 = struct {
  4394  	FpContext    uintptr
  4395  	FnParam      int32
  4396  	F__ccgo_pad1 [4]byte
  4397  	FaParam      uintptr
  4398  	FpUser       uintptr
  4399  	FxDelUser    uintptr
  4400  }
  4401  
  4402  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  4403  type sqlite3_rtree_query_info1 = struct {
  4404  	FpContext      uintptr
  4405  	FnParam        int32
  4406  	F__ccgo_pad1   [4]byte
  4407  	FaParam        uintptr
  4408  	FpUser         uintptr
  4409  	FxDelUser      uintptr
  4410  	FaCoord        uintptr
  4411  	FanQueue       uintptr
  4412  	FnCoord        int32
  4413  	FiLevel        int32
  4414  	FmxLevel       int32
  4415  	F__ccgo_pad2   [4]byte
  4416  	FiRowid        sqlite3_int64
  4417  	FrParentScore  sqlite3_rtree_dbl
  4418  	FeParentWithin int32
  4419  	FeWithin       int32
  4420  	FrScore        sqlite3_rtree_dbl
  4421  	FapSqlParam    uintptr
  4422  }
  4423  
  4424  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  4425  
  4426  type sqlite3_rtree_dbl = float64
  4427  
  4428  type Fts5ExtensionApi1 = struct {
  4429  	FiVersion           int32
  4430  	F__ccgo_pad1        [4]byte
  4431  	FxUserData          uintptr
  4432  	FxColumnCount       uintptr
  4433  	FxRowCount          uintptr
  4434  	FxColumnTotalSize   uintptr
  4435  	FxTokenize          uintptr
  4436  	FxPhraseCount       uintptr
  4437  	FxPhraseSize        uintptr
  4438  	FxInstCount         uintptr
  4439  	FxInst              uintptr
  4440  	FxRowid             uintptr
  4441  	FxColumnText        uintptr
  4442  	FxColumnSize        uintptr
  4443  	FxQueryPhrase       uintptr
  4444  	FxSetAuxdata        uintptr
  4445  	FxGetAuxdata        uintptr
  4446  	FxPhraseFirst       uintptr
  4447  	FxPhraseNext        uintptr
  4448  	FxPhraseFirstColumn uintptr
  4449  	FxPhraseNextColumn  uintptr
  4450  }
  4451  
  4452  type Fts5ExtensionApi = Fts5ExtensionApi1
  4453  type Fts5PhraseIter1 = struct {
  4454  	Fa uintptr
  4455  	Fb uintptr
  4456  }
  4457  
  4458  type Fts5PhraseIter = Fts5PhraseIter1
  4459  
  4460  type fts5_extension_function = uintptr
  4461  type fts5_tokenizer1 = struct {
  4462  	FxCreate   uintptr
  4463  	FxDelete   uintptr
  4464  	FxTokenize uintptr
  4465  }
  4466  
  4467  type fts5_tokenizer = fts5_tokenizer1
  4468  
  4469  type fts5_api1 = struct {
  4470  	FiVersion         int32
  4471  	F__ccgo_pad1      [4]byte
  4472  	FxCreateTokenizer uintptr
  4473  	FxFindTokenizer   uintptr
  4474  	FxCreateFunction  uintptr
  4475  }
  4476  
  4477  type fts5_api = fts5_api1
  4478  
  4479  type sqlite3expert1 = struct {
  4480  	FiSample     int32
  4481  	F__ccgo_pad1 [4]byte
  4482  	Fdb          uintptr
  4483  	Fdbm         uintptr
  4484  	Fdbv         uintptr
  4485  	FpTable      uintptr
  4486  	FpScan       uintptr
  4487  	FpWrite      uintptr
  4488  	FpStatement  uintptr
  4489  	FbRun        int32
  4490  	F__ccgo_pad2 [4]byte
  4491  	FpzErrmsg    uintptr
  4492  	Frc          int32
  4493  	F__ccgo_pad3 [4]byte
  4494  	FhIdx        IdxHash
  4495  	FzCandidates uintptr
  4496  }
  4497  
  4498  type sqlite3expert = sqlite3expert1
  4499  
  4500  type __locale_struct = struct {
  4501  	F__locales       [13]uintptr
  4502  	F__ctype_b       uintptr
  4503  	F__ctype_tolower uintptr
  4504  	F__ctype_toupper uintptr
  4505  	F__names         [13]uintptr
  4506  }
  4507  
  4508  type locale_t = uintptr
  4509  
  4510  type _G_fpos_t = struct {
  4511  	F__pos   int64
  4512  	F__state struct {
  4513  		F__count int32
  4514  		F__value struct{ F__wch uint32 }
  4515  	}
  4516  }
  4517  
  4518  type _G_fpos64_t = struct {
  4519  	F__pos   int64
  4520  	F__state struct {
  4521  		F__count int32
  4522  		F__value struct{ F__wch uint32 }
  4523  	}
  4524  }
  4525  
  4526  type _IO_FILE = struct {
  4527  	F_flags          int32
  4528  	F__ccgo_pad1     [4]byte
  4529  	F_IO_read_ptr    uintptr
  4530  	F_IO_read_end    uintptr
  4531  	F_IO_read_base   uintptr
  4532  	F_IO_write_base  uintptr
  4533  	F_IO_write_ptr   uintptr
  4534  	F_IO_write_end   uintptr
  4535  	F_IO_buf_base    uintptr
  4536  	F_IO_buf_end     uintptr
  4537  	F_IO_save_base   uintptr
  4538  	F_IO_backup_base uintptr
  4539  	F_IO_save_end    uintptr
  4540  	F_markers        uintptr
  4541  	F_chain          uintptr
  4542  	F_fileno         int32
  4543  	F_flags2         int32
  4544  	F_old_offset     int64
  4545  	F_cur_column     uint16
  4546  	F_vtable_offset  int8
  4547  	F_shortbuf       [1]uint8
  4548  	F__ccgo_pad2     [4]byte
  4549  	F_lock           uintptr
  4550  	F_offset         int64
  4551  	F_codecvt        uintptr
  4552  	F_wide_data      uintptr
  4553  	F_freeres_list   uintptr
  4554  	F_freeres_buf    uintptr
  4555  	F__pad5          size_t
  4556  	F_mode           int32
  4557  	F_unused2        [20]uint8
  4558  }
  4559  
  4560  type FILE = _IO_FILE
  4561  
  4562  type off_t = int64
  4563  
  4564  type ssize_t = int64
  4565  
  4566  type fpos_t = _G_fpos64_t
  4567  
  4568  type i64 = sqlite3_int64
  4569  type u64 = sqlite3_uint64
  4570  
  4571  type IdxColumn1 = struct {
  4572  	FzName       uintptr
  4573  	FzColl       uintptr
  4574  	FiPk         int32
  4575  	F__ccgo_pad1 [4]byte
  4576  }
  4577  
  4578  type IdxColumn = IdxColumn1
  4579  type IdxConstraint1 = struct {
  4580  	FzColl  uintptr
  4581  	FbRange int32
  4582  	FiCol   int32
  4583  	FbFlag  int32
  4584  	FbDesc  int32
  4585  	FpNext  uintptr
  4586  	FpLink  uintptr
  4587  }
  4588  
  4589  type IdxConstraint = IdxConstraint1
  4590  type IdxScan1 = struct {
  4591  	FpTab        uintptr
  4592  	FiDb         int32
  4593  	F__ccgo_pad1 [4]byte
  4594  	Fcovering    i64
  4595  	FpOrder      uintptr
  4596  	FpEq         uintptr
  4597  	FpRange      uintptr
  4598  	FpNextScan   uintptr
  4599  }
  4600  
  4601  type IdxScan = IdxScan1
  4602  type IdxStatement1 = struct {
  4603  	FiId         int32
  4604  	F__ccgo_pad1 [4]byte
  4605  	FzSql        uintptr
  4606  	FzIdx        uintptr
  4607  	FzEQP        uintptr
  4608  	FpNext       uintptr
  4609  }
  4610  
  4611  type IdxStatement = IdxStatement1
  4612  type IdxTable1 = struct {
  4613  	FnCol        int32
  4614  	F__ccgo_pad1 [4]byte
  4615  	FzName       uintptr
  4616  	FaCol        uintptr
  4617  	FpNext       uintptr
  4618  }
  4619  
  4620  type IdxTable = IdxTable1
  4621  type IdxWrite1 = struct {
  4622  	FpTab        uintptr
  4623  	FeOp         int32
  4624  	F__ccgo_pad1 [4]byte
  4625  	FpNext       uintptr
  4626  }
  4627  
  4628  type IdxWrite = IdxWrite1
  4629  
  4630  type IdxHashEntry1 = struct {
  4631  	FzKey      uintptr
  4632  	FzVal      uintptr
  4633  	FzVal2     uintptr
  4634  	FpHashNext uintptr
  4635  	FpNext     uintptr
  4636  }
  4637  
  4638  type IdxHashEntry = IdxHashEntry1
  4639  type IdxHash1 = struct {
  4640  	FpFirst uintptr
  4641  	FaHash  [1023]uintptr
  4642  }
  4643  
  4644  type IdxHash = IdxHash1
  4645  
  4646  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4647  	var pRet uintptr
  4648  
  4649  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4650  	if pRet != 0 {
  4651  		libc.Xmemset(tls, pRet, 0, uint64(nByte))
  4652  	} else {
  4653  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4654  	}
  4655  	return pRet
  4656  }
  4657  
  4658  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  4659  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4660  }
  4661  
  4662  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  4663  	var i int32
  4664  	for i = 0; i < IDX_HASH_SIZE; i++ {
  4665  		var pEntry uintptr
  4666  		var pNext uintptr
  4667  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(i)*8)); pEntry != 0; pEntry = pNext {
  4668  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  4669  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  4670  			sqlite3.Xsqlite3_free(tls, pEntry)
  4671  		}
  4672  	}
  4673  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4674  }
  4675  
  4676  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  4677  	var ret uint32 = uint32(0)
  4678  	var i int32
  4679  	for i = 0; i < n; i++ {
  4680  		ret = ret + (ret<<3 + uint32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))))
  4681  	}
  4682  	return int32(ret % uint32(IDX_HASH_SIZE))
  4683  }
  4684  
  4685  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  4686  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  4687  	var iHash int32 = idxHashString(tls, zKey, nKey)
  4688  	var nVal int32 = func() int32 {
  4689  		if zVal != 0 {
  4690  			return int32(libc.Xstrlen(tls, zVal))
  4691  		}
  4692  		return 0
  4693  	}()
  4694  	var pEntry uintptr
  4695  
  4696  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4697  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4698  			return 1
  4699  		}
  4700  	}
  4701  	pEntry = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxHashEntry{}))+uint64(nKey)+uint64(1)+uint64(nVal)+uint64(1)))
  4702  	if pEntry != 0 {
  4703  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*40
  4704  		libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey))
  4705  		if zVal != 0 {
  4706  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  4707  			libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint64(nVal))
  4708  		}
  4709  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8))
  4710  		*(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)) = pEntry
  4711  
  4712  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  4713  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  4714  	}
  4715  	return 0
  4716  }
  4717  
  4718  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4719  	var iHash int32
  4720  	var pEntry uintptr
  4721  	if nKey < 0 {
  4722  		nKey = int32(libc.Xstrlen(tls, zKey))
  4723  	}
  4724  	iHash = idxHashString(tls, zKey, nKey)
  4725  
  4726  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4727  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4728  			return pEntry
  4729  		}
  4730  	}
  4731  	return uintptr(0)
  4732  }
  4733  
  4734  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4735  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  4736  	if pEntry != 0 {
  4737  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  4738  	}
  4739  	return uintptr(0)
  4740  }
  4741  
  4742  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  4743  	var pNew uintptr
  4744  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  4745  
  4746  	pNew = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxConstraint{}))*uint64(nColl)+uint64(1)))
  4747  	if pNew != 0 {
  4748  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*40
  4749  		libc.Xmemcpy(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint64(nColl+1))
  4750  	}
  4751  	return pNew
  4752  }
  4753  
  4754  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  4755  	bp := tls.Alloc(8)
  4756  	defer tls.Free(8)
  4757  
  4758  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  4759  }
  4760  
  4761  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  4762  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  4763  	if rc != SQLITE_OK {
  4764  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  4765  		idxDatabaseError(tls, db, pzErrmsg)
  4766  	}
  4767  	return rc
  4768  }
  4769  
  4770  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  4771  	var ap va_list
  4772  	_ = ap
  4773  	var rc int32
  4774  	var zSql uintptr
  4775  	ap = va
  4776  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4777  	if zSql == uintptr(0) {
  4778  		rc = SQLITE_NOMEM
  4779  	} else {
  4780  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  4781  		sqlite3.Xsqlite3_free(tls, zSql)
  4782  	}
  4783  	_ = ap
  4784  	return rc
  4785  }
  4786  
  4787  type ExpertVtab1 = struct {
  4788  	Fbase    sqlite3_vtab
  4789  	FpTab    uintptr
  4790  	FpExpert uintptr
  4791  }
  4792  
  4793  type ExpertVtab = ExpertVtab1
  4794  
  4795  type ExpertCsr1 = struct {
  4796  	Fbase  sqlite3_vtab_cursor
  4797  	FpData uintptr
  4798  }
  4799  
  4800  type ExpertCsr = ExpertCsr1
  4801  
  4802  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  4803  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  4804  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  4805  
  4806  	if zRet != 0 {
  4807  		var iOut int32 = 0
  4808  		var iIn int32 = 0
  4809  		for iIn = 1; iIn < n-1; iIn++ {
  4810  			if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  4811  				iIn++
  4812  			}
  4813  			*(*uint8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
  4814  		}
  4815  		*(*uint8)(unsafe.Pointer(zRet + uintptr(iOut))) = uint8(0)
  4816  	}
  4817  
  4818  	return zRet
  4819  }
  4820  
  4821  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  4822  	bp := tls.Alloc(4)
  4823  	defer tls.Free(4)
  4824  
  4825  	var pExpert uintptr = pAux
  4826  	var p uintptr = uintptr(0)
  4827  
  4828  	if argc != 4 {
  4829  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  4830  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  4831  	} else {
  4832  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
  4833  		if zCreateTable != 0 {
  4834  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  4835  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4836  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  4837  			}
  4838  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4839  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  4840  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  4841  
  4842  			}
  4843  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  4844  		} else {
  4845  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  4846  		}
  4847  	}
  4848  
  4849  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  4850  	return *(*int32)(unsafe.Pointer(bp))
  4851  }
  4852  
  4853  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  4854  	var p uintptr = pVtab
  4855  	sqlite3.Xsqlite3_free(tls, p)
  4856  	return SQLITE_OK
  4857  }
  4858  
  4859  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  4860  	bp := tls.Alloc(4)
  4861  	defer tls.Free(4)
  4862  
  4863  	var p uintptr = pVtab
  4864  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4865  	var n int32 = 0
  4866  	var pScan uintptr
  4867  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  4868  
  4869  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  4870  	if pScan != 0 {
  4871  		var i int32
  4872  
  4873  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  4874  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  4875  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  4876  
  4877  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  4878  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  4879  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  4880  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  4881  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*24)).FiPk == 0 &&
  4882  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  4883  				var pNew uintptr
  4884  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  4885  				pNew = idxNewConstraint(tls, bp, zColl)
  4886  				if pNew != 0 {
  4887  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  4888  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  4889  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  4890  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  4891  					} else {
  4892  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  4893  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  4894  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  4895  					}
  4896  				}
  4897  				n++
  4898  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  4899  			}
  4900  		}
  4901  
  4902  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  4903  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  4904  			if iCol >= 0 {
  4905  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*24)).FzColl)
  4906  				if pNew != 0 {
  4907  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  4908  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  4909  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4910  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4911  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  4912  					n++
  4913  				}
  4914  			}
  4915  		}
  4916  	}
  4917  
  4918  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  4919  	return *(*int32)(unsafe.Pointer(bp))
  4920  }
  4921  
  4922  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  4923  	_ = pVtab
  4924  	_ = nData
  4925  	_ = azData
  4926  	_ = pRowid
  4927  	return SQLITE_OK
  4928  }
  4929  
  4930  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  4931  	bp := tls.Alloc(4)
  4932  	defer tls.Free(4)
  4933  
  4934  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4935  	var pCsr uintptr
  4936  	_ = pVTab
  4937  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  4938  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  4939  	return *(*int32)(unsafe.Pointer(bp))
  4940  }
  4941  
  4942  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  4943  	var pCsr uintptr = cur
  4944  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4945  	sqlite3.Xsqlite3_free(tls, pCsr)
  4946  	return SQLITE_OK
  4947  }
  4948  
  4949  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  4950  	var pCsr uintptr = cur
  4951  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  4952  }
  4953  
  4954  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  4955  	var pCsr uintptr = cur
  4956  	var rc int32 = SQLITE_OK
  4957  
  4958  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4959  	if rc != SQLITE_ROW {
  4960  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4961  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4962  	} else {
  4963  		rc = SQLITE_OK
  4964  	}
  4965  
  4966  	return rc
  4967  }
  4968  
  4969  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  4970  	_ = cur
  4971  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  4972  	return SQLITE_OK
  4973  }
  4974  
  4975  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  4976  	var pCsr uintptr = cur
  4977  	var pVal uintptr
  4978  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  4979  	if pVal != 0 {
  4980  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  4981  	}
  4982  	return SQLITE_OK
  4983  }
  4984  
  4985  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  4986  	bp := tls.Alloc(8)
  4987  	defer tls.Free(8)
  4988  
  4989  	var pCsr uintptr = cur
  4990  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  4991  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  4992  	var rc int32
  4993  
  4994  	_ = idxNum
  4995  	_ = idxStr
  4996  	_ = argc
  4997  	_ = argv
  4998  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4999  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  5000  	if rc == SQLITE_OK {
  5001  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+8, pVtab+16,
  5002  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  5003  	}
  5004  
  5005  	if rc == SQLITE_OK {
  5006  		rc = expertNext(tls, cur)
  5007  	}
  5008  	return rc
  5009  }
  5010  
  5011  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  5012  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  5013  }
  5014  
  5015  var expertModule = sqlite3_module{
  5016  	FiVersion:    2,
  5017  	FxCreate:     0,
  5018  	FxConnect:    0,
  5019  	FxBestIndex:  0,
  5020  	FxDisconnect: 0,
  5021  	FxDestroy:    0,
  5022  	FxOpen:       0,
  5023  	FxClose:      0,
  5024  	FxFilter:     0,
  5025  	FxNext:       0,
  5026  	FxEof:        0,
  5027  	FxColumn:     0,
  5028  	FxRowid:      0,
  5029  	FxUpdate:     0,
  5030  }
  5031  
  5032  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  5033  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  5034  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5035  		*(*int32)(unsafe.Pointer(pRc)) = rc
  5036  	}
  5037  }
  5038  
  5039  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  5040  	bp := tls.Alloc(40)
  5041  	defer tls.Free(40)
  5042  
  5043  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  5044  	var nCol int32 = 0
  5045  	var nTab int32
  5046  	var nByte int32
  5047  	var pNew uintptr = uintptr(0)
  5048  
  5049  	var rc2 int32
  5050  	var pCsr uintptr = uintptr(0)
  5051  	var nPk int32 = 0
  5052  
  5053  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  5054  	if zTab == uintptr(0) {
  5055  		return SQLITE_ERROR
  5056  	}
  5057  	nTab = int32(libc.Xstrlen(tls, zTab))
  5058  	nByte = int32(uint64(unsafe.Sizeof(IdxTable{})) + uint64(nTab) + uint64(1))
  5059  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  5060  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5061  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5062  		*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5063  		if zCol == uintptr(0) {
  5064  			*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ERROR
  5065  			break
  5066  		}
  5067  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  5068  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5069  			db, ts+85, zTab, zCol, uintptr(0), bp+16, uintptr(0), uintptr(0), uintptr(0))
  5070  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == uintptr(0) {
  5071  			*(*uintptr)(unsafe.Pointer(bp + 16)) = ts + 90
  5072  		}
  5073  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))))
  5074  		nCol++
  5075  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  5076  	}
  5077  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5078  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5079  		*(*int32)(unsafe.Pointer(bp + 24)) = rc2
  5080  	}
  5081  
  5082  	nByte = int32(uint64(nByte) + uint64(unsafe.Sizeof(IdxColumn{}))*uint64(nCol))
  5083  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5084  		pNew = idxMalloc(tls, bp+24, nByte)
  5085  	}
  5086  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5087  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*32
  5088  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  5089  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24
  5090  	}
  5091  
  5092  	nCol = 0
  5093  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5094  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5095  		*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  5096  		var nCopy int32
  5097  		if zCol == uintptr(0) {
  5098  			continue
  5099  		}
  5100  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  5101  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzName = pCsr
  5102  		(*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)
  5103  		libc.Xmemcpy(tls, pCsr, zCol, uint64(nCopy))
  5104  		pCsr += uintptr(nCopy)
  5105  
  5106  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5107  			db, ts+85, zTab, zCol, uintptr(0), bp+32, uintptr(0), uintptr(0), uintptr(0))
  5108  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5109  			if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
  5110  				*(*uintptr)(unsafe.Pointer(bp + 32)) = ts + 90
  5111  			}
  5112  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))) + 1
  5113  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzColl = pCsr
  5114  			libc.Xmemcpy(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 32)), uint64(nCopy))
  5115  			pCsr += uintptr(nCopy)
  5116  		}
  5117  
  5118  		nCol++
  5119  	}
  5120  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5121  
  5122  	if *(*int32)(unsafe.Pointer(bp + 24)) != SQLITE_OK {
  5123  		sqlite3.Xsqlite3_free(tls, pNew)
  5124  		pNew = uintptr(0)
  5125  	} else if pNew != uintptr(0) {
  5126  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  5127  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  5128  			libc.Xmemcpy(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint64(nTab+1))
  5129  		}
  5130  	}
  5131  
  5132  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  5133  	return *(*int32)(unsafe.Pointer(bp + 24))
  5134  }
  5135  
  5136  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  5137  	var ap va_list
  5138  	_ = ap
  5139  	var zAppend uintptr = uintptr(0)
  5140  	var zRet uintptr = uintptr(0)
  5141  	var nIn int32
  5142  	if zIn != 0 {
  5143  		nIn = int32(libc.Xstrlen(tls, zIn))
  5144  	} else {
  5145  		nIn = 0
  5146  	}
  5147  	var nAppend int32 = 0
  5148  	ap = va
  5149  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5150  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  5151  		if zAppend != 0 {
  5152  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  5153  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  5154  		}
  5155  		if zAppend != 0 && zRet != 0 {
  5156  			if nIn != 0 {
  5157  				libc.Xmemcpy(tls, zRet, zIn, uint64(nIn))
  5158  			}
  5159  			libc.Xmemcpy(tls, zRet+uintptr(nIn), zAppend, uint64(nAppend+1))
  5160  		} else {
  5161  			sqlite3.Xsqlite3_free(tls, zRet)
  5162  			zRet = uintptr(0)
  5163  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  5164  		}
  5165  		sqlite3.Xsqlite3_free(tls, zAppend)
  5166  		sqlite3.Xsqlite3_free(tls, zIn)
  5167  	}
  5168  	_ = ap
  5169  	return zRet
  5170  }
  5171  
  5172  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  5173  	var i int32
  5174  	for i = 0; *(*uint8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  5175  		if !(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  5176  			!(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  5177  			!(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  5178  			!(int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*uint8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  5179  			return 1
  5180  		}
  5181  	}
  5182  	return 0
  5183  }
  5184  
  5185  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  5186  	bp := tls.Alloc(32)
  5187  	defer tls.Free(32)
  5188  
  5189  	var zRet uintptr = zIn
  5190  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*24
  5191  	if zRet != 0 {
  5192  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  5193  	}
  5194  
  5195  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  5196  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5197  	} else {
  5198  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5199  	}
  5200  
  5201  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5202  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5203  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5204  		} else {
  5205  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5206  		}
  5207  	}
  5208  
  5209  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  5210  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  5211  	}
  5212  	return zRet
  5213  }
  5214  
  5215  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5216  	bp := tls.Alloc(36)
  5217  	defer tls.Free(36)
  5218  
  5219  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5220  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5221  	var pIter uintptr
  5222  	var nEq int32 = 0
  5223  
  5224  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5225  		nEq++
  5226  	}
  5227  
  5228  	*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  5229  	for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  5230  		var bMatch int32 = 1
  5231  		var pT uintptr = pTail
  5232  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  5233  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  5234  		if zIdx == uintptr(0) {
  5235  			continue
  5236  		}
  5237  
  5238  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5239  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  5240  		}
  5241  
  5242  		*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+24, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  5243  		for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW {
  5244  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  5245  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
  5246  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 4)
  5247  
  5248  			if iIdx < nEq {
  5249  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5250  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  5251  						continue
  5252  					}
  5253  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  5254  						continue
  5255  					}
  5256  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  5257  						continue
  5258  					}
  5259  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  5260  					break
  5261  				}
  5262  				if pIter == uintptr(0) {
  5263  					bMatch = 0
  5264  					break
  5265  				}
  5266  			} else {
  5267  				if pT != 0 {
  5268  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  5269  						bMatch = 0
  5270  						break
  5271  					}
  5272  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  5273  				}
  5274  			}
  5275  		}
  5276  		idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 24)))
  5277  
  5278  		if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && bMatch != 0 {
  5279  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5280  			return 1
  5281  		}
  5282  	}
  5283  	idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5284  
  5285  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 32))
  5286  	return 0
  5287  }
  5288  
  5289  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  5290  	_ = azColumns
  5291  	if nc > 0 && (int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  5292  		*(*int32)(unsafe.Pointer(pCount)) += 1
  5293  	}
  5294  	return 0
  5295  }
  5296  
  5297  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5298  	bp := tls.Alloc(56)
  5299  	defer tls.Free(56)
  5300  
  5301  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5302  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  5303  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  5304  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  5305  		var zCols uintptr = uintptr(0)
  5306  		var zIdx uintptr = uintptr(0)
  5307  		var pCons uintptr
  5308  		var h uint32 = uint32(0)
  5309  		var zFmt uintptr
  5310  
  5311  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5312  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5313  		}
  5314  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5315  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5316  		}
  5317  
  5318  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  5319  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5320  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  5321  			var zName uintptr = uintptr(0)
  5322  			var collisions int32 = 0
  5323  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  5324  				var zFind uintptr
  5325  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*uint8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  5326  					h = h + (h<<3 + uint32(*(*uint8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  5327  				}
  5328  				sqlite3.Xsqlite3_free(tls, zName)
  5329  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  5330  				if zName == uintptr(0) {
  5331  					break
  5332  				}
  5333  
  5334  				zFmt = ts + 188
  5335  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  5336  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  5337  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  5338  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  5339  				}{countNonzeros})), bp+52, uintptr(0))
  5340  
  5341  				sqlite3.Xsqlite3_free(tls, zFind)
  5342  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  5343  					collisions = 0
  5344  					break
  5345  				}
  5346  				collisions++
  5347  			}
  5348  			if collisions != 0 {
  5349  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5350  			} else if zName == uintptr(0) {
  5351  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5352  			} else {
  5353  				if quoteTable != 0 {
  5354  					zFmt = ts + 274
  5355  				} else {
  5356  					zFmt = ts + 304
  5357  				}
  5358  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  5359  				if !(zIdx != 0) {
  5360  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5361  				} else {
  5362  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  5363  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  5364  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5365  					} else {
  5366  						idxHashAdd(tls, bp+48, p+88, zName, zIdx)
  5367  					}
  5368  				}
  5369  				sqlite3.Xsqlite3_free(tls, zName)
  5370  				sqlite3.Xsqlite3_free(tls, zIdx)
  5371  			}
  5372  		}
  5373  
  5374  		sqlite3.Xsqlite3_free(tls, zCols)
  5375  	}
  5376  	return *(*int32)(unsafe.Pointer(bp + 48))
  5377  }
  5378  
  5379  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  5380  	var pCmp uintptr
  5381  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  5382  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  5383  			return 1
  5384  		}
  5385  	}
  5386  	return 0
  5387  }
  5388  
  5389  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  5390  	var p1 uintptr = uintptr(0)
  5391  	var pCon uintptr
  5392  	var rc int32
  5393  
  5394  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5395  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5396  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  5397  			p1 = pCon
  5398  		}
  5399  	}
  5400  
  5401  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  5402  
  5403  	if pTail == uintptr(0) {
  5404  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5405  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5406  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  5407  			}
  5408  		}
  5409  	}
  5410  
  5411  	return rc
  5412  }
  5413  
  5414  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  5415  	var rc int32 = SQLITE_OK
  5416  	var pIter uintptr
  5417  
  5418  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  5419  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  5420  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  5421  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  5422  		}
  5423  	}
  5424  
  5425  	return rc
  5426  }
  5427  
  5428  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  5429  	var pNext uintptr
  5430  	var p uintptr
  5431  
  5432  	for p = pConstraint; p != 0; p = pNext {
  5433  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  5434  		sqlite3.Xsqlite3_free(tls, p)
  5435  	}
  5436  }
  5437  
  5438  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  5439  	var p uintptr
  5440  	var pNext uintptr
  5441  	for p = pScan; p != pLast; p = pNext {
  5442  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  5443  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  5444  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  5445  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  5446  		sqlite3.Xsqlite3_free(tls, p)
  5447  	}
  5448  }
  5449  
  5450  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  5451  	var p uintptr
  5452  	var pNext uintptr
  5453  	for p = pStatement; p != pLast; p = pNext {
  5454  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  5455  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  5456  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  5457  		sqlite3.Xsqlite3_free(tls, p)
  5458  	}
  5459  }
  5460  
  5461  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  5462  	var pIter uintptr
  5463  	var pNext uintptr
  5464  	for pIter = pTab; pIter != 0; pIter = pNext {
  5465  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  5466  		sqlite3.Xsqlite3_free(tls, pIter)
  5467  	}
  5468  }
  5469  
  5470  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  5471  	var pIter uintptr
  5472  	var pNext uintptr
  5473  	for pIter = pTab; pIter != 0; pIter = pNext {
  5474  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  5475  		sqlite3.Xsqlite3_free(tls, pIter)
  5476  	}
  5477  }
  5478  
  5479  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5480  	bp := tls.Alloc(8228)
  5481  	defer tls.Free(8228)
  5482  
  5483  	var pStmt uintptr
  5484  	var dbm uintptr
  5485  
  5486  	var zSql uintptr
  5487  	var nIdx int32
  5488  	var zIdx uintptr
  5489  
  5490  	var zDetail uintptr
  5491  	var nDetail int32
  5492  	var i int32
  5493  	var pEntry uintptr
  5494  
  5495  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5496  	*(*int32)(unsafe.Pointer(bp + 8224)) = SQLITE_OK
  5497  	idxHashInit(tls, bp+24)
  5498  
  5499  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5500  __1:
  5501  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && pStmt != 0) {
  5502  		goto __3
  5503  	}
  5504  	*(*uintptr)(unsafe.Pointer(bp + 8216)) = uintptr(0)
  5505  	idxHashClear(tls, bp+24)
  5506  	*(*int32)(unsafe.Pointer(bp + 8224)) = idxPrintfPrepareStmt(tls, dbm, bp+8216, pzErr,
  5507  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5508  __4:
  5509  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8216))) == SQLITE_ROW) {
  5510  		goto __5
  5511  	}
  5512  
  5513  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8216)), 3)
  5514  
  5515  	if !!(zDetail != 0) {
  5516  		goto __6
  5517  	}
  5518  	goto __4
  5519  __6:
  5520  	;
  5521  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5522  
  5523  	i = 0
  5524  __7:
  5525  	if !(i < nDetail) {
  5526  		goto __9
  5527  	}
  5528  	zIdx = uintptr(0)
  5529  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint64(13)) == 0) {
  5530  		goto __10
  5531  	}
  5532  	zIdx = zDetail + uintptr(i+13)
  5533  	goto __11
  5534  __10:
  5535  	if !(i+22 < nDetail &&
  5536  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint64(22)) == 0) {
  5537  		goto __12
  5538  	}
  5539  	zIdx = zDetail + uintptr(i+22)
  5540  __12:
  5541  	;
  5542  __11:
  5543  	;
  5544  	if !(zIdx != 0) {
  5545  		goto __13
  5546  	}
  5547  	nIdx = 0
  5548  __14:
  5549  	if !(int32(*(*uint8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*uint8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*uint8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5550  		goto __15
  5551  	}
  5552  	nIdx++
  5553  	goto __14
  5554  __15:
  5555  	;
  5556  	zSql = idxHashSearch(tls, p+88, zIdx, nIdx)
  5557  	if !(zSql != 0) {
  5558  		goto __16
  5559  	}
  5560  	idxHashAdd(tls, bp+8224, bp+24, zSql, uintptr(0))
  5561  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) != 0) {
  5562  		goto __17
  5563  	}
  5564  	goto find_indexes_out
  5565  __17:
  5566  	;
  5567  __16:
  5568  	;
  5569  	goto __9
  5570  __13:
  5571  	;
  5572  	goto __8
  5573  __8:
  5574  	i++
  5575  	goto __7
  5576  	goto __9
  5577  __9:
  5578  	;
  5579  	if !(int32(*(*uint8)(unsafe.Pointer(zDetail))) != '-') {
  5580  		goto __18
  5581  	}
  5582  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5583  __18:
  5584  	;
  5585  	goto __4
  5586  __5:
  5587  	;
  5588  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5589  __19:
  5590  	if !(pEntry != 0) {
  5591  		goto __21
  5592  	}
  5593  	(*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))
  5594  	goto __20
  5595  __20:
  5596  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5597  	goto __19
  5598  	goto __21
  5599  __21:
  5600  	;
  5601  	idxFinalize(tls, bp+8224, *(*uintptr)(unsafe.Pointer(bp + 8216)))
  5602  	goto __2
  5603  __2:
  5604  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5605  	goto __1
  5606  	goto __3
  5607  __3:
  5608  	;
  5609  find_indexes_out:
  5610  	idxHashClear(tls, bp+24)
  5611  	return *(*int32)(unsafe.Pointer(bp + 8224))
  5612  }
  5613  
  5614  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5615  	bp := tls.Alloc(4)
  5616  	defer tls.Free(4)
  5617  
  5618  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5619  	_ = z4
  5620  	_ = zTrigger
  5621  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5622  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5623  			var p uintptr = pCtx
  5624  			var pTab uintptr
  5625  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5626  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5627  					break
  5628  				}
  5629  			}
  5630  			if pTab != 0 {
  5631  				var pWrite uintptr
  5632  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5633  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5634  						break
  5635  					}
  5636  				}
  5637  				if pWrite == uintptr(0) {
  5638  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5639  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5640  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5641  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5642  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5643  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5644  					}
  5645  				}
  5646  			}
  5647  		}
  5648  	}
  5649  	return *(*int32)(unsafe.Pointer(bp))
  5650  }
  5651  
  5652  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  5653  	bp := tls.Alloc(104)
  5654  	defer tls.Free(104)
  5655  
  5656  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  5657  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  5658  	var zSql uintptr = ts + 398
  5659  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  5660  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
  5661  	var zWrite uintptr = uintptr(0)
  5662  
  5663  	*(*int32)(unsafe.Pointer(bp + 88)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  5664  	for *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  5665  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  5666  		if zCreate == uintptr(0) {
  5667  			continue
  5668  		}
  5669  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  5670  	}
  5671  	idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 80)))
  5672  
  5673  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5674  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  5675  		if z == uintptr(0) {
  5676  			*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5677  		} else {
  5678  			*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  5679  			sqlite3.Xsqlite3_free(tls, z)
  5680  		}
  5681  	}
  5682  
  5683  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  5684  	case SQLITE_INSERT:
  5685  		{
  5686  			var i int32
  5687  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+557, libc.VaList(bp+32, zInt))
  5688  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5689  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  5690  					if i == 0 {
  5691  						return ts + 584
  5692  					}
  5693  					return ts + 97
  5694  				}()))
  5695  			}
  5696  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+585, 0)
  5697  			break
  5698  
  5699  		}
  5700  	case SQLITE_UPDATE:
  5701  		{
  5702  			var i int32
  5703  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+587, libc.VaList(bp+48, zInt))
  5704  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5705  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  5706  					if i == 0 {
  5707  						return ts + 584
  5708  					}
  5709  					return ts + 97
  5710  				}(),
  5711  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*24)).FzName))
  5712  			}
  5713  			break
  5714  
  5715  		}
  5716  	default:
  5717  		{
  5718  			if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5719  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  5720  				if zWrite == uintptr(0) {
  5721  					*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5722  				}
  5723  			}
  5724  
  5725  		}
  5726  	}
  5727  
  5728  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5729  		*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  5730  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+96, uintptr(0))
  5731  		idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 96)))
  5732  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
  5733  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5734  		}
  5735  	}
  5736  	sqlite3.Xsqlite3_free(tls, zWrite)
  5737  
  5738  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5739  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  5740  	}
  5741  
  5742  	return *(*int32)(unsafe.Pointer(bp + 88))
  5743  }
  5744  
  5745  var zInt uintptr = ts + 624
  5746  var zDrop uintptr = ts + 662
  5747  
  5748  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5749  	var rc int32 = SQLITE_OK
  5750  	var pEnd uintptr = uintptr(0)
  5751  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5752  
  5753  	for rc == SQLITE_OK && pFirst != pEnd {
  5754  		var pIter uintptr
  5755  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  5756  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  5757  		}
  5758  		pEnd = pFirst
  5759  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5760  	}
  5761  
  5762  	return rc
  5763  }
  5764  
  5765  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  5766  	bp := tls.Alloc(60)
  5767  	defer tls.Free(60)
  5768  
  5769  	*(*int32)(unsafe.Pointer(bp + 56)) = idxRegisterVtab(tls, p)
  5770  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5771  
  5772  	*(*int32)(unsafe.Pointer(bp + 56)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  5773  		ts+711)
  5774  	for *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5775  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5776  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5777  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5778  
  5779  		if zType == uintptr(0) || zName == uintptr(0) {
  5780  			continue
  5781  		}
  5782  		if int32(*(*uint8)(unsafe.Pointer(zType))) == 'v' || int32(*(*uint8)(unsafe.Pointer(zType + 1))) == 'r' {
  5783  			if zSql != 0 {
  5784  				*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5785  			}
  5786  		} else {
  5787  			*(*int32)(unsafe.Pointer(bp + 56)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+48, pzErrmsg)
  5788  			if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5789  				var i int32
  5790  				var zInner uintptr = uintptr(0)
  5791  				var zOuter uintptr = uintptr(0)
  5792  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  5793  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 48))
  5794  
  5795  				zInner = idxAppendText(tls, bp+56, uintptr(0), ts+979, 0)
  5796  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FnCol; i++ {
  5797  					zInner = idxAppendText(tls, bp+56, zInner, ts+995,
  5798  						libc.VaList(bp, func() uintptr {
  5799  							if i == 0 {
  5800  								return ts + 584
  5801  							}
  5802  							return ts + 97
  5803  						}(), (*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))
  5804  				}
  5805  				zInner = idxAppendText(tls, bp+56, zInner, ts+585, 0)
  5806  
  5807  				zOuter = idxAppendText(tls, bp+56, uintptr(0),
  5808  					ts+1011, libc.VaList(bp+24, zName, zInner))
  5809  				if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5810  					*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  5811  				}
  5812  				sqlite3.Xsqlite3_free(tls, zInner)
  5813  				sqlite3.Xsqlite3_free(tls, zOuter)
  5814  			}
  5815  		}
  5816  	}
  5817  	idxFinalize(tls, bp+56, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5818  	return *(*int32)(unsafe.Pointer(bp + 56))
  5819  }
  5820  
  5821  type IdxSampleCtx = struct {
  5822  	FiTarget     int32
  5823  	F__ccgo_pad1 [4]byte
  5824  	Ftarget      float64
  5825  	FnRow        float64
  5826  	FnRet        float64
  5827  }
  5828  
  5829  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5830  	bp := tls.Alloc(2)
  5831  	defer tls.Free(2)
  5832  
  5833  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5834  	var bRet int32
  5835  
  5836  	_ = argv
  5837  
  5838  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  5839  		bRet = 1
  5840  	} else {
  5841  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  5842  		if bRet == 0 {
  5843  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  5844  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  5845  		}
  5846  	}
  5847  
  5848  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  5849  	*(*float64)(unsafe.Pointer(p + 16)) += 1.0
  5850  	*(*float64)(unsafe.Pointer(p + 24)) += float64(bRet)
  5851  }
  5852  
  5853  type IdxRemCtx = struct {
  5854  	FnSlot       int32
  5855  	F__ccgo_pad1 [4]byte
  5856  	FaSlot       [1]struct {
  5857  		FeType       int32
  5858  		F__ccgo_pad1 [4]byte
  5859  		FiVal        i64
  5860  		FrVal        float64
  5861  		FnByte       int32
  5862  		Fn           int32
  5863  		Fz           uintptr
  5864  	}
  5865  }
  5866  
  5867  type IdxRemSlot = struct {
  5868  	FeType       int32
  5869  	F__ccgo_pad1 [4]byte
  5870  	FiVal        i64
  5871  	FrVal        float64
  5872  	FnByte       int32
  5873  	Fn           int32
  5874  	Fz           uintptr
  5875  }
  5876  
  5877  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5878  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5879  	var pSlot uintptr
  5880  	var iSlot int32
  5881  
  5882  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  5883  
  5884  	pSlot = p + 8 + uintptr(iSlot)*40
  5885  
  5886  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5887  	case SQLITE_NULL:
  5888  		break
  5889  
  5890  	case SQLITE_INTEGER:
  5891  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  5892  		break
  5893  
  5894  	case SQLITE_FLOAT:
  5895  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  5896  		break
  5897  
  5898  	case SQLITE_BLOB:
  5899  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5900  		break
  5901  
  5902  	case SQLITE_TEXT:
  5903  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5904  		break
  5905  	}
  5906  
  5907  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5908  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5909  	case SQLITE_NULL:
  5910  		break
  5911  
  5912  	case SQLITE_INTEGER:
  5913  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5914  		break
  5915  
  5916  	case SQLITE_FLOAT:
  5917  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5918  		break
  5919  
  5920  	case SQLITE_BLOB:
  5921  		fallthrough
  5922  	case SQLITE_TEXT:
  5923  		{
  5924  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5925  			var pData uintptr = uintptr(0)
  5926  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  5927  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  5928  				if zNew == uintptr(0) {
  5929  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  5930  					return
  5931  				}
  5932  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  5933  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  5934  			}
  5935  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  5936  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  5937  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5938  				if pData != 0 {
  5939  					libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5940  				}
  5941  			} else {
  5942  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5943  				libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5944  			}
  5945  			break
  5946  
  5947  		}
  5948  	}
  5949  }
  5950  
  5951  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  5952  	bp := tls.Alloc(12)
  5953  	defer tls.Free(12)
  5954  
  5955  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  5956  	var zMax uintptr = ts + 1052
  5957  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5958  
  5959  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  5960  	*(*int32)(unsafe.Pointer(bp + 8)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  5961  	if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  5962  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  5963  	}
  5964  	idxFinalize(tls, bp+8, *(*uintptr)(unsafe.Pointer(bp)))
  5965  
  5966  	return *(*int32)(unsafe.Pointer(bp + 8))
  5967  }
  5968  
  5969  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  5970  	bp := tls.Alloc(128)
  5971  	defer tls.Free(128)
  5972  
  5973  	var zCols uintptr = uintptr(0)
  5974  	var zOrder uintptr = uintptr(0)
  5975  	var zQuery uintptr = uintptr(0)
  5976  	var nCol int32 = 0
  5977  	var i int32
  5978  	*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
  5979  	var aStat uintptr = uintptr(0)
  5980  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  5981  
  5982  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  5983  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  5984  		var zComma uintptr
  5985  		if zCols == uintptr(0) {
  5986  			zComma = ts + 584
  5987  		} else {
  5988  			zComma = ts + 97
  5989  		}
  5990  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  5991  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  5992  		zCols = idxAppendText(tls, bp+112, zCols,
  5993  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  5994  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  5995  	}
  5996  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  5997  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5998  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5999  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  6000  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  6001  		} else {
  6002  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  6003  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  6004  		}
  6005  	}
  6006  	sqlite3.Xsqlite3_free(tls, zCols)
  6007  	sqlite3.Xsqlite3_free(tls, zOrder)
  6008  
  6009  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6010  		var dbrem uintptr = func() uintptr {
  6011  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6012  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6013  			}
  6014  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6015  		}()
  6016  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+120, pzErr, zQuery)
  6017  	}
  6018  	sqlite3.Xsqlite3_free(tls, zQuery)
  6019  
  6020  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6021  		aStat = idxMalloc(tls, bp+112, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nCol+1)))
  6022  	}
  6023  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  6024  		var pEntry uintptr
  6025  		var zStat uintptr = uintptr(0)
  6026  		for i = 0; i <= nCol; i++ {
  6027  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  6028  		}
  6029  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  6030  			*(*int32)(unsafe.Pointer(aStat))++
  6031  			for i = 0; i < nCol; i++ {
  6032  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 120)), i) == 0 {
  6033  					break
  6034  				}
  6035  			}
  6036  			for ; i < nCol; i++ {
  6037  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  6038  			}
  6039  		}
  6040  
  6041  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6042  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  6043  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  6044  			if zStat == uintptr(0) {
  6045  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  6046  			}
  6047  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  6048  				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))))
  6049  			}
  6050  		}
  6051  
  6052  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6053  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  6054  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  6055  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  6056  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  6057  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  6058  		}
  6059  
  6060  		pEntry = idxHashFind(tls, p+88, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  6061  		if pEntry != 0 {
  6062  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  6063  		} else {
  6064  			sqlite3.Xsqlite3_free(tls, zStat)
  6065  		}
  6066  	}
  6067  	sqlite3.Xsqlite3_free(tls, aStat)
  6068  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 120)))
  6069  
  6070  	return *(*int32)(unsafe.Pointer(bp + 112))
  6071  }
  6072  
  6073  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  6074  	bp := tls.Alloc(8)
  6075  	defer tls.Free(8)
  6076  
  6077  	var rc int32
  6078  	var zSql uintptr
  6079  
  6080  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6081  	if rc != SQLITE_OK {
  6082  		return rc
  6083  	}
  6084  
  6085  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  6086  		ts+1404, libc.VaList(bp, zTab))
  6087  	if zSql == uintptr(0) {
  6088  		return SQLITE_NOMEM
  6089  	}
  6090  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  6091  	sqlite3.Xsqlite3_free(tls, zSql)
  6092  
  6093  	return rc
  6094  }
  6095  
  6096  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6097  	bp := tls.Alloc(64)
  6098  	defer tls.Free(64)
  6099  
  6100  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  6101  	*(*int32)(unsafe.Pointer(bp)) = 0
  6102  	var pCtx uintptr = uintptr(0)
  6103  
  6104  	var i int32
  6105  	var iPrev i64 = int64(-100000)
  6106  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  6107  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  6108  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  6109  
  6110  	var zAllIndex uintptr = ts + 1480
  6111  	var zIndexXInfo uintptr = ts + 1594
  6112  	var zWrite uintptr = ts + 1649
  6113  
  6114  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  6115  		return SQLITE_OK
  6116  	}
  6117  
  6118  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  6119  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6120  		return *(*int32)(unsafe.Pointer(bp + 4))
  6121  	}
  6122  
  6123  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  6124  
  6125  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6126  		var nByte int32 = int32(uint64(unsafe.Sizeof(IdxRemCtx{})) + uint64(unsafe.Sizeof(IdxRemSlot{}))*uint64(*(*int32)(unsafe.Pointer(bp))))
  6127  		pCtx = idxMalloc(tls, bp+4, nByte)
  6128  	}
  6129  
  6130  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6131  		var dbrem uintptr = func() uintptr {
  6132  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6133  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6134  			}
  6135  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6136  		}()
  6137  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6138  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  6139  				f func(*libc.TLS, uintptr, int32, uintptr)
  6140  			}{idxRemFunc})), uintptr(0), uintptr(0))
  6141  	}
  6142  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6143  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6144  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  6145  				f func(*libc.TLS, uintptr, int32, uintptr)
  6146  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  6147  	}
  6148  
  6149  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6150  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  6151  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zAllIndex)
  6152  	}
  6153  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6154  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+48, pzErr, zIndexXInfo)
  6155  	}
  6156  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6157  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+56, pzErr, zWrite)
  6158  	}
  6159  
  6160  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  6161  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  6162  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  6163  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  6164  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  6165  			continue
  6166  		}
  6167  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  6168  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  6169  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  6170  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  6171  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  6172  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  6173  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6174  				break
  6175  			}
  6176  		}
  6177  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)), zTab, zIdx, pzErr)
  6178  		iPrev = iRowid
  6179  	}
  6180  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  6181  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  6182  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6183  	}
  6184  
  6185  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  6186  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 48)))
  6187  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 56)))
  6188  
  6189  	if pCtx != 0 {
  6190  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  6191  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+8+uintptr(i)*40)).Fz)
  6192  		}
  6193  		sqlite3.Xsqlite3_free(tls, pCtx)
  6194  	}
  6195  
  6196  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6197  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  6198  	}
  6199  
  6200  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6201  	return *(*int32)(unsafe.Pointer(bp + 4))
  6202  }
  6203  
  6204  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  6205  	bp := tls.Alloc(32)
  6206  	defer tls.Free(32)
  6207  
  6208  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6209  	var pNew uintptr
  6210  
  6211  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  6212  
  6213  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6214  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  6215  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  6216  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+24)
  6217  	}
  6218  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6219  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+16)
  6220  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6221  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  6222  		}
  6223  	}
  6224  
  6225  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6226  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  6227  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+24, pzErrmsg,
  6228  			ts+1766, 0)
  6229  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) {
  6230  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  6231  			if zSql != 0 {
  6232  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  6233  			}
  6234  		}
  6235  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 24)))
  6236  	}
  6237  
  6238  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6239  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  6240  	}
  6241  
  6242  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6243  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  6244  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  6245  		}{idxAuthCallback})), pNew)
  6246  	}
  6247  
  6248  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6249  		sqlite3_expert_destroy(tls, pNew)
  6250  		pNew = uintptr(0)
  6251  	}
  6252  	return pNew
  6253  }
  6254  
  6255  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  6256  	var rc int32 = SQLITE_OK
  6257  	var ap va_list
  6258  	_ = ap
  6259  	ap = va
  6260  	switch op {
  6261  	case EXPERT_CONFIG_SAMPLE:
  6262  		{
  6263  			var iVal int32 = libc.VaInt32(&ap)
  6264  			if iVal < 0 {
  6265  				iVal = 0
  6266  			}
  6267  			if iVal > 100 {
  6268  				iVal = 100
  6269  			}
  6270  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  6271  			break
  6272  
  6273  		}
  6274  	default:
  6275  		rc = SQLITE_NOTFOUND
  6276  		break
  6277  	}
  6278  
  6279  	_ = ap
  6280  	return rc
  6281  }
  6282  
  6283  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  6284  	bp := tls.Alloc(20)
  6285  	defer tls.Free(20)
  6286  
  6287  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  6288  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6289  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6290  	*(*uintptr)(unsafe.Pointer(bp + 8)) = zSql
  6291  
  6292  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  6293  		return SQLITE_MISUSE
  6294  	}
  6295  
  6296  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 && *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != 0 {
  6297  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  6298  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 8)), -1, bp, bp+8)
  6299  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6300  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  6301  				var pNew uintptr
  6302  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6303  				var n int32 = int32(libc.Xstrlen(tls, z))
  6304  				pNew = idxMalloc(tls, bp+16, int32(uint64(unsafe.Sizeof(IdxStatement{}))+uint64(n)+uint64(1)))
  6305  				if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6306  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*40
  6307  					libc.Xmemcpy(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint64(n+1))
  6308  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6309  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6310  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6311  					}
  6312  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  6313  				}
  6314  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6315  			}
  6316  		} else {
  6317  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  6318  		}
  6319  	}
  6320  
  6321  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6322  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  6323  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  6324  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  6325  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  6326  	}
  6327  
  6328  	return *(*int32)(unsafe.Pointer(bp + 16))
  6329  }
  6330  
  6331  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6332  	bp := tls.Alloc(28)
  6333  	defer tls.Free(28)
  6334  
  6335  	var pEntry uintptr
  6336  
  6337  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  6338  
  6339  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6340  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  6341  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  6342  		if pzErr != 0 {
  6343  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  6344  		}
  6345  		return *(*int32)(unsafe.Pointer(bp + 24))
  6346  	}
  6347  
  6348  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6349  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  6350  	}
  6351  
  6352  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  6353  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  6354  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  6355  				func() uintptr {
  6356  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  6357  						return ts + 1918
  6358  					}
  6359  					return ts + 584
  6360  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  6361  	}
  6362  
  6363  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6364  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  6365  	}
  6366  
  6367  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6368  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  6369  	}
  6370  	return *(*int32)(unsafe.Pointer(bp + 24))
  6371  }
  6372  
  6373  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  6374  	var nRet int32 = 0
  6375  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6376  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6377  	}
  6378  	return nRet
  6379  }
  6380  
  6381  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  6382  	var zRet uintptr = uintptr(0)
  6383  	var pStmt uintptr
  6384  
  6385  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  6386  		return uintptr(0)
  6387  	}
  6388  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  6389  	}
  6390  	switch eReport {
  6391  	case EXPERT_REPORT_SQL:
  6392  		if pStmt != 0 {
  6393  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  6394  		}
  6395  		break
  6396  	case EXPERT_REPORT_INDEXES:
  6397  		if pStmt != 0 {
  6398  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  6399  		}
  6400  		break
  6401  	case EXPERT_REPORT_PLAN:
  6402  		if pStmt != 0 {
  6403  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  6404  		}
  6405  		break
  6406  	case EXPERT_REPORT_CANDIDATES:
  6407  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  6408  		break
  6409  	}
  6410  	return zRet
  6411  }
  6412  
  6413  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  6414  	if p != 0 {
  6415  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  6416  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  6417  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  6418  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  6419  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  6420  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  6421  		idxHashClear(tls, p+88)
  6422  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  6423  		sqlite3.Xsqlite3_free(tls, p)
  6424  	}
  6425  }
  6426  
  6427  type ClientData = uintptr
  6428  
  6429  type Tcl_WideInt = int64
  6430  type Tcl_WideUInt = uint64
  6431  
  6432  type stat = struct {
  6433  	Fst_dev     uint64
  6434  	Fst_ino     uint64
  6435  	Fst_mode    uint32
  6436  	Fst_nlink   uint32
  6437  	Fst_uid     uint32
  6438  	Fst_gid     uint32
  6439  	Fst_rdev    uint64
  6440  	F__pad1     uint64
  6441  	Fst_size    int64
  6442  	Fst_blksize int32
  6443  	F__pad2     int32
  6444  	Fst_blocks  int64
  6445  	Fst_atim    struct {
  6446  		Ftv_sec  int64
  6447  		Ftv_nsec int64
  6448  	}
  6449  	Fst_mtim struct {
  6450  		Ftv_sec  int64
  6451  		Ftv_nsec int64
  6452  	}
  6453  	Fst_ctim struct {
  6454  		Ftv_sec  int64
  6455  		Ftv_nsec int64
  6456  	}
  6457  	F__glibc_reserved [2]int32
  6458  }
  6459  
  6460  type Tcl_Interp1 = struct {
  6461  	FresultDontUse    uintptr
  6462  	FfreeProcDontUse  uintptr
  6463  	FerrorLineDontUse int32
  6464  	F__ccgo_pad1      [4]byte
  6465  }
  6466  
  6467  type Tcl_Interp = Tcl_Interp1
  6468  
  6469  type Tcl_AsyncHandler = uintptr
  6470  type Tcl_Channel = uintptr
  6471  type Tcl_ChannelTypeVersion = uintptr
  6472  type Tcl_Command = uintptr
  6473  type Tcl_Condition = uintptr
  6474  type Tcl_Dict = uintptr
  6475  type Tcl_EncodingState = uintptr
  6476  type Tcl_Encoding = uintptr
  6477  type Tcl_Event1 = struct {
  6478  	Fproc    uintptr
  6479  	FnextPtr uintptr
  6480  }
  6481  
  6482  type Tcl_Event = Tcl_Event1
  6483  type Tcl_InterpState = uintptr
  6484  type Tcl_LoadHandle = uintptr
  6485  type Tcl_Mutex = uintptr
  6486  type Tcl_Pid = uintptr
  6487  type Tcl_RegExp = uintptr
  6488  type Tcl_ThreadDataKey = uintptr
  6489  type Tcl_ThreadId = uintptr
  6490  type Tcl_TimerToken = uintptr
  6491  type Tcl_Trace = uintptr
  6492  type Tcl_Var = uintptr
  6493  type Tcl_ZlibStream = uintptr
  6494  
  6495  type Tcl_RegExpIndices1 = struct {
  6496  	Fstart int64
  6497  	Fend   int64
  6498  }
  6499  
  6500  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6501  
  6502  type Tcl_RegExpInfo1 = struct {
  6503  	Fnsubs       int32
  6504  	F__ccgo_pad1 [4]byte
  6505  	Fmatches     uintptr
  6506  	FextendStart int64
  6507  	Freserved    int64
  6508  }
  6509  
  6510  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6511  
  6512  type Tcl_Stat_ = uintptr
  6513  type Tcl_OldStat_ = uintptr
  6514  
  6515  type Tcl_ValueType = uint32
  6516  
  6517  type Tcl_Value1 = struct {
  6518  	Ftype        Tcl_ValueType
  6519  	F__ccgo_pad1 [4]byte
  6520  	FintValue    int64
  6521  	FdoubleValue float64
  6522  	FwideValue   Tcl_WideInt
  6523  }
  6524  
  6525  type Tcl_Value = Tcl_Value1
  6526  
  6527  type Tcl_Obj1 = struct {
  6528  	FrefCount    int32
  6529  	F__ccgo_pad1 [4]byte
  6530  	Fbytes       uintptr
  6531  	Flength      int32
  6532  	F__ccgo_pad2 [4]byte
  6533  	FtypePtr     uintptr
  6534  	FinternalRep struct {
  6535  		FlongValue   int64
  6536  		F__ccgo_pad1 [8]byte
  6537  	}
  6538  }
  6539  
  6540  type Tcl_ObjType1 = struct {
  6541  	Fname             uintptr
  6542  	FfreeIntRepProc   uintptr
  6543  	FdupIntRepProc    uintptr
  6544  	FupdateStringProc uintptr
  6545  	FsetFromAnyProc   uintptr
  6546  }
  6547  
  6548  type Tcl_ObjType = Tcl_ObjType1
  6549  
  6550  type Tcl_Obj = Tcl_Obj1
  6551  
  6552  type Tcl_SavedResult1 = struct {
  6553  	Fresult       uintptr
  6554  	FfreeProc     uintptr
  6555  	FobjResultPtr uintptr
  6556  	FappendResult uintptr
  6557  	FappendAvl    int32
  6558  	FappendUsed   int32
  6559  	FresultSpace  [201]uint8
  6560  	F__ccgo_pad1  [7]byte
  6561  }
  6562  
  6563  type Tcl_SavedResult = Tcl_SavedResult1
  6564  
  6565  type Tcl_Namespace1 = struct {
  6566  	Fname       uintptr
  6567  	FfullName   uintptr
  6568  	FclientData ClientData
  6569  	FdeleteProc uintptr
  6570  	FparentPtr  uintptr
  6571  }
  6572  
  6573  type Tcl_Namespace = Tcl_Namespace1
  6574  
  6575  type Tcl_CallFrame1 = struct {
  6576  	FnsPtr       uintptr
  6577  	Fdummy1      int32
  6578  	Fdummy2      int32
  6579  	Fdummy3      uintptr
  6580  	Fdummy4      uintptr
  6581  	Fdummy5      uintptr
  6582  	Fdummy6      int32
  6583  	F__ccgo_pad1 [4]byte
  6584  	Fdummy7      uintptr
  6585  	Fdummy8      uintptr
  6586  	Fdummy9      int32
  6587  	F__ccgo_pad2 [4]byte
  6588  	Fdummy10     uintptr
  6589  	Fdummy11     uintptr
  6590  	Fdummy12     uintptr
  6591  	Fdummy13     uintptr
  6592  }
  6593  
  6594  type Tcl_CallFrame = Tcl_CallFrame1
  6595  
  6596  type Tcl_CmdInfo1 = struct {
  6597  	FisNativeObjectProc int32
  6598  	F__ccgo_pad1        [4]byte
  6599  	FobjProc            uintptr
  6600  	FobjClientData      ClientData
  6601  	Fproc               uintptr
  6602  	FclientData         ClientData
  6603  	FdeleteProc         uintptr
  6604  	FdeleteData         ClientData
  6605  	FnamespacePtr       uintptr
  6606  }
  6607  
  6608  type Tcl_CmdInfo = Tcl_CmdInfo1
  6609  
  6610  type Tcl_DString1 = struct {
  6611  	Fstring      uintptr
  6612  	Flength      int32
  6613  	FspaceAvl    int32
  6614  	FstaticSpace [200]uint8
  6615  }
  6616  
  6617  type Tcl_DString = Tcl_DString1
  6618  
  6619  type Tcl_HashKeyType1 = struct {
  6620  	Fversion         int32
  6621  	Fflags           int32
  6622  	FhashKeyProc     uintptr
  6623  	FcompareKeysProc uintptr
  6624  	FallocEntryProc  uintptr
  6625  	FfreeEntryProc   uintptr
  6626  }
  6627  
  6628  type Tcl_HashKeyType = Tcl_HashKeyType1
  6629  type Tcl_HashTable1 = struct {
  6630  	Fbuckets       uintptr
  6631  	FstaticBuckets [4]uintptr
  6632  	FnumBuckets    int32
  6633  	FnumEntries    int32
  6634  	FrebuildSize   int32
  6635  	FdownShift     int32
  6636  	Fmask          int32
  6637  	FkeyType       int32
  6638  	FfindProc      uintptr
  6639  	FcreateProc    uintptr
  6640  	FtypePtr       uintptr
  6641  }
  6642  
  6643  type Tcl_HashTable = Tcl_HashTable1
  6644  type Tcl_HashEntry1 = struct {
  6645  	FnextPtr    uintptr
  6646  	FtablePtr   uintptr
  6647  	Fhash       uintptr
  6648  	FclientData ClientData
  6649  	Fkey        struct{ FoneWordValue uintptr }
  6650  }
  6651  
  6652  type Tcl_HashEntry = Tcl_HashEntry1
  6653  
  6654  type Tcl_HashSearch1 = struct {
  6655  	FtablePtr     uintptr
  6656  	FnextIndex    int32
  6657  	F__ccgo_pad1  [4]byte
  6658  	FnextEntryPtr uintptr
  6659  }
  6660  
  6661  type Tcl_HashSearch = Tcl_HashSearch1
  6662  
  6663  type Tcl_DictSearch = struct {
  6664  	Fnext          uintptr
  6665  	Fepoch         int32
  6666  	F__ccgo_pad1   [4]byte
  6667  	FdictionaryPtr Tcl_Dict
  6668  }
  6669  
  6670  type Tcl_QueuePosition = uint32
  6671  
  6672  type Tcl_Time1 = struct {
  6673  	Fsec  int64
  6674  	Fusec int64
  6675  }
  6676  
  6677  type Tcl_Time = Tcl_Time1
  6678  
  6679  type Tcl_ChannelType1 = struct {
  6680  	FtypeName         uintptr
  6681  	Fversion          Tcl_ChannelTypeVersion
  6682  	FcloseProc        uintptr
  6683  	FinputProc        uintptr
  6684  	FoutputProc       uintptr
  6685  	FseekProc         uintptr
  6686  	FsetOptionProc    uintptr
  6687  	FgetOptionProc    uintptr
  6688  	FwatchProc        uintptr
  6689  	FgetHandleProc    uintptr
  6690  	Fclose2Proc       uintptr
  6691  	FblockModeProc    uintptr
  6692  	FflushProc        uintptr
  6693  	FhandlerProc      uintptr
  6694  	FwideSeekProc     uintptr
  6695  	FthreadActionProc uintptr
  6696  	FtruncateProc     uintptr
  6697  }
  6698  
  6699  type Tcl_ChannelType = Tcl_ChannelType1
  6700  
  6701  type Tcl_PathType = uint32
  6702  
  6703  type Tcl_GlobTypeData1 = struct {
  6704  	Ftype       int32
  6705  	Fperm       int32
  6706  	FmacType    uintptr
  6707  	FmacCreator uintptr
  6708  }
  6709  
  6710  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  6711  
  6712  type utimbuf = struct {
  6713  	Factime  int64
  6714  	Fmodtime int64
  6715  }
  6716  
  6717  type Tcl_FSVersion = uintptr
  6718  
  6719  type Tcl_Filesystem1 = struct {
  6720  	FtypeName                 uintptr
  6721  	FstructureLength          int32
  6722  	F__ccgo_pad1              [4]byte
  6723  	Fversion                  Tcl_FSVersion
  6724  	FpathInFilesystemProc     uintptr
  6725  	FdupInternalRepProc       uintptr
  6726  	FfreeInternalRepProc      uintptr
  6727  	FinternalToNormalizedProc uintptr
  6728  	FcreateInternalRepProc    uintptr
  6729  	FnormalizePathProc        uintptr
  6730  	FfilesystemPathTypeProc   uintptr
  6731  	FfilesystemSeparatorProc  uintptr
  6732  	FstatProc                 uintptr
  6733  	FaccessProc               uintptr
  6734  	FopenFileChannelProc      uintptr
  6735  	FmatchInDirectoryProc     uintptr
  6736  	FutimeProc                uintptr
  6737  	FlinkProc                 uintptr
  6738  	FlistVolumesProc          uintptr
  6739  	FfileAttrStringsProc      uintptr
  6740  	FfileAttrsGetProc         uintptr
  6741  	FfileAttrsSetProc         uintptr
  6742  	FcreateDirectoryProc      uintptr
  6743  	FremoveDirectoryProc      uintptr
  6744  	FdeleteFileProc           uintptr
  6745  	FcopyFileProc             uintptr
  6746  	FrenameFileProc           uintptr
  6747  	FcopyDirectoryProc        uintptr
  6748  	FlstatProc                uintptr
  6749  	FloadFileProc             uintptr
  6750  	FgetCwdProc               uintptr
  6751  	FchdirProc                uintptr
  6752  }
  6753  
  6754  type Tcl_Filesystem = Tcl_Filesystem1
  6755  
  6756  type Tcl_NotifierProcs1 = struct {
  6757  	FsetTimerProc          uintptr
  6758  	FwaitForEventProc      uintptr
  6759  	FcreateFileHandlerProc uintptr
  6760  	FdeleteFileHandlerProc uintptr
  6761  	FinitNotifierProc      uintptr
  6762  	FfinalizeNotifierProc  uintptr
  6763  	FalertNotifierProc     uintptr
  6764  	FserviceModeHookProc   uintptr
  6765  }
  6766  
  6767  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  6768  
  6769  type Tcl_Token1 = struct {
  6770  	Ftype          int32
  6771  	F__ccgo_pad1   [4]byte
  6772  	Fstart         uintptr
  6773  	Fsize          int32
  6774  	FnumComponents int32
  6775  }
  6776  
  6777  type Tcl_Token = Tcl_Token1
  6778  
  6779  type Tcl_Parse1 = struct {
  6780  	FcommentStart    uintptr
  6781  	FcommentSize     int32
  6782  	F__ccgo_pad1     [4]byte
  6783  	FcommandStart    uintptr
  6784  	FcommandSize     int32
  6785  	FnumWords        int32
  6786  	FtokenPtr        uintptr
  6787  	FnumTokens       int32
  6788  	FtokensAvailable int32
  6789  	FerrorType       int32
  6790  	F__ccgo_pad2     [4]byte
  6791  	Fstring          uintptr
  6792  	Fend             uintptr
  6793  	Finterp          uintptr
  6794  	Fterm            uintptr
  6795  	Fincomplete      int32
  6796  	F__ccgo_pad3     [4]byte
  6797  	FstaticTokens    [20]Tcl_Token
  6798  }
  6799  
  6800  type Tcl_Parse = Tcl_Parse1
  6801  
  6802  type Tcl_EncodingType1 = struct {
  6803  	FencodingName uintptr
  6804  	FtoUtfProc    uintptr
  6805  	FfromUtfProc  uintptr
  6806  	FfreeProc     uintptr
  6807  	FclientData   ClientData
  6808  	FnullSize     int32
  6809  	F__ccgo_pad1  [4]byte
  6810  }
  6811  
  6812  type Tcl_EncodingType = Tcl_EncodingType1
  6813  
  6814  type Tcl_UniChar = uint16
  6815  
  6816  type Tcl_Config1 = struct {
  6817  	Fkey   uintptr
  6818  	Fvalue uintptr
  6819  }
  6820  
  6821  type Tcl_Config = Tcl_Config1
  6822  type mp_digit = uint32
  6823  
  6824  type Tcl_ArgvInfo = struct {
  6825  	Ftype        int32
  6826  	F__ccgo_pad1 [4]byte
  6827  	FkeyStr      uintptr
  6828  	FsrcPtr      uintptr
  6829  	FdstPtr      uintptr
  6830  	FhelpStr     uintptr
  6831  	FclientData  ClientData
  6832  }
  6833  
  6834  type TclPlatStubs1 = struct {
  6835  	Fmagic       int32
  6836  	F__ccgo_pad1 [4]byte
  6837  	Fhooks       uintptr
  6838  }
  6839  
  6840  type TclStubHooks = struct {
  6841  	FtclPlatStubs    uintptr
  6842  	FtclIntStubs     uintptr
  6843  	FtclIntPlatStubs uintptr
  6844  }
  6845  
  6846  type TclStubs1 = struct {
  6847  	Fmagic                                  int32
  6848  	F__ccgo_pad1                            [4]byte
  6849  	Fhooks                                  uintptr
  6850  	Ftcl_PkgProvideEx                       uintptr
  6851  	Ftcl_PkgRequireEx                       uintptr
  6852  	Ftcl_Panic                              uintptr
  6853  	Ftcl_Alloc                              uintptr
  6854  	Ftcl_Free                               uintptr
  6855  	Ftcl_Realloc                            uintptr
  6856  	Ftcl_DbCkalloc                          uintptr
  6857  	Ftcl_DbCkfree                           uintptr
  6858  	Ftcl_DbCkrealloc                        uintptr
  6859  	Ftcl_CreateFileHandler                  uintptr
  6860  	Ftcl_DeleteFileHandler                  uintptr
  6861  	Ftcl_SetTimer                           uintptr
  6862  	Ftcl_Sleep                              uintptr
  6863  	Ftcl_WaitForEvent                       uintptr
  6864  	Ftcl_AppendAllObjTypes                  uintptr
  6865  	Ftcl_AppendStringsToObj                 uintptr
  6866  	Ftcl_AppendToObj                        uintptr
  6867  	Ftcl_ConcatObj                          uintptr
  6868  	Ftcl_ConvertToType                      uintptr
  6869  	Ftcl_DbDecrRefCount                     uintptr
  6870  	Ftcl_DbIncrRefCount                     uintptr
  6871  	Ftcl_DbIsShared                         uintptr
  6872  	Ftcl_DbNewBooleanObj                    uintptr
  6873  	Ftcl_DbNewByteArrayObj                  uintptr
  6874  	Ftcl_DbNewDoubleObj                     uintptr
  6875  	Ftcl_DbNewListObj                       uintptr
  6876  	Ftcl_DbNewLongObj                       uintptr
  6877  	Ftcl_DbNewObj                           uintptr
  6878  	Ftcl_DbNewStringObj                     uintptr
  6879  	Ftcl_DuplicateObj                       uintptr
  6880  	FtclFreeObj                             uintptr
  6881  	Ftcl_GetBoolean                         uintptr
  6882  	Ftcl_GetBooleanFromObj                  uintptr
  6883  	Ftcl_GetByteArrayFromObj                uintptr
  6884  	Ftcl_GetDouble                          uintptr
  6885  	Ftcl_GetDoubleFromObj                   uintptr
  6886  	Ftcl_GetIndexFromObj                    uintptr
  6887  	Ftcl_GetInt                             uintptr
  6888  	Ftcl_GetIntFromObj                      uintptr
  6889  	Ftcl_GetLongFromObj                     uintptr
  6890  	Ftcl_GetObjType                         uintptr
  6891  	Ftcl_GetStringFromObj                   uintptr
  6892  	Ftcl_InvalidateStringRep                uintptr
  6893  	Ftcl_ListObjAppendList                  uintptr
  6894  	Ftcl_ListObjAppendElement               uintptr
  6895  	Ftcl_ListObjGetElements                 uintptr
  6896  	Ftcl_ListObjIndex                       uintptr
  6897  	Ftcl_ListObjLength                      uintptr
  6898  	Ftcl_ListObjReplace                     uintptr
  6899  	Ftcl_NewBooleanObj                      uintptr
  6900  	Ftcl_NewByteArrayObj                    uintptr
  6901  	Ftcl_NewDoubleObj                       uintptr
  6902  	Ftcl_NewIntObj                          uintptr
  6903  	Ftcl_NewListObj                         uintptr
  6904  	Ftcl_NewLongObj                         uintptr
  6905  	Ftcl_NewObj                             uintptr
  6906  	Ftcl_NewStringObj                       uintptr
  6907  	Ftcl_SetBooleanObj                      uintptr
  6908  	Ftcl_SetByteArrayLength                 uintptr
  6909  	Ftcl_SetByteArrayObj                    uintptr
  6910  	Ftcl_SetDoubleObj                       uintptr
  6911  	Ftcl_SetIntObj                          uintptr
  6912  	Ftcl_SetListObj                         uintptr
  6913  	Ftcl_SetLongObj                         uintptr
  6914  	Ftcl_SetObjLength                       uintptr
  6915  	Ftcl_SetStringObj                       uintptr
  6916  	Ftcl_AddErrorInfo                       uintptr
  6917  	Ftcl_AddObjErrorInfo                    uintptr
  6918  	Ftcl_AllowExceptions                    uintptr
  6919  	Ftcl_AppendElement                      uintptr
  6920  	Ftcl_AppendResult                       uintptr
  6921  	Ftcl_AsyncCreate                        uintptr
  6922  	Ftcl_AsyncDelete                        uintptr
  6923  	Ftcl_AsyncInvoke                        uintptr
  6924  	Ftcl_AsyncMark                          uintptr
  6925  	Ftcl_AsyncReady                         uintptr
  6926  	Ftcl_BackgroundError                    uintptr
  6927  	Ftcl_Backslash                          uintptr
  6928  	Ftcl_BadChannelOption                   uintptr
  6929  	Ftcl_CallWhenDeleted                    uintptr
  6930  	Ftcl_CancelIdleCall                     uintptr
  6931  	Ftcl_Close                              uintptr
  6932  	Ftcl_CommandComplete                    uintptr
  6933  	Ftcl_Concat                             uintptr
  6934  	Ftcl_ConvertElement                     uintptr
  6935  	Ftcl_ConvertCountedElement              uintptr
  6936  	Ftcl_CreateAlias                        uintptr
  6937  	Ftcl_CreateAliasObj                     uintptr
  6938  	Ftcl_CreateChannel                      uintptr
  6939  	Ftcl_CreateChannelHandler               uintptr
  6940  	Ftcl_CreateCloseHandler                 uintptr
  6941  	Ftcl_CreateCommand                      uintptr
  6942  	Ftcl_CreateEventSource                  uintptr
  6943  	Ftcl_CreateExitHandler                  uintptr
  6944  	Ftcl_CreateInterp                       uintptr
  6945  	Ftcl_CreateMathFunc                     uintptr
  6946  	Ftcl_CreateObjCommand                   uintptr
  6947  	Ftcl_CreateSlave                        uintptr
  6948  	Ftcl_CreateTimerHandler                 uintptr
  6949  	Ftcl_CreateTrace                        uintptr
  6950  	Ftcl_DeleteAssocData                    uintptr
  6951  	Ftcl_DeleteChannelHandler               uintptr
  6952  	Ftcl_DeleteCloseHandler                 uintptr
  6953  	Ftcl_DeleteCommand                      uintptr
  6954  	Ftcl_DeleteCommandFromToken             uintptr
  6955  	Ftcl_DeleteEvents                       uintptr
  6956  	Ftcl_DeleteEventSource                  uintptr
  6957  	Ftcl_DeleteExitHandler                  uintptr
  6958  	Ftcl_DeleteHashEntry                    uintptr
  6959  	Ftcl_DeleteHashTable                    uintptr
  6960  	Ftcl_DeleteInterp                       uintptr
  6961  	Ftcl_DetachPids                         uintptr
  6962  	Ftcl_DeleteTimerHandler                 uintptr
  6963  	Ftcl_DeleteTrace                        uintptr
  6964  	Ftcl_DontCallWhenDeleted                uintptr
  6965  	Ftcl_DoOneEvent                         uintptr
  6966  	Ftcl_DoWhenIdle                         uintptr
  6967  	Ftcl_DStringAppend                      uintptr
  6968  	Ftcl_DStringAppendElement               uintptr
  6969  	Ftcl_DStringEndSublist                  uintptr
  6970  	Ftcl_DStringFree                        uintptr
  6971  	Ftcl_DStringGetResult                   uintptr
  6972  	Ftcl_DStringInit                        uintptr
  6973  	Ftcl_DStringResult                      uintptr
  6974  	Ftcl_DStringSetLength                   uintptr
  6975  	Ftcl_DStringStartSublist                uintptr
  6976  	Ftcl_Eof                                uintptr
  6977  	Ftcl_ErrnoId                            uintptr
  6978  	Ftcl_ErrnoMsg                           uintptr
  6979  	Ftcl_Eval                               uintptr
  6980  	Ftcl_EvalFile                           uintptr
  6981  	Ftcl_EvalObj                            uintptr
  6982  	Ftcl_EventuallyFree                     uintptr
  6983  	Ftcl_Exit                               uintptr
  6984  	Ftcl_ExposeCommand                      uintptr
  6985  	Ftcl_ExprBoolean                        uintptr
  6986  	Ftcl_ExprBooleanObj                     uintptr
  6987  	Ftcl_ExprDouble                         uintptr
  6988  	Ftcl_ExprDoubleObj                      uintptr
  6989  	Ftcl_ExprLong                           uintptr
  6990  	Ftcl_ExprLongObj                        uintptr
  6991  	Ftcl_ExprObj                            uintptr
  6992  	Ftcl_ExprString                         uintptr
  6993  	Ftcl_Finalize                           uintptr
  6994  	Ftcl_FindExecutable                     uintptr
  6995  	Ftcl_FirstHashEntry                     uintptr
  6996  	Ftcl_Flush                              uintptr
  6997  	Ftcl_FreeResult                         uintptr
  6998  	Ftcl_GetAlias                           uintptr
  6999  	Ftcl_GetAliasObj                        uintptr
  7000  	Ftcl_GetAssocData                       uintptr
  7001  	Ftcl_GetChannel                         uintptr
  7002  	Ftcl_GetChannelBufferSize               uintptr
  7003  	Ftcl_GetChannelHandle                   uintptr
  7004  	Ftcl_GetChannelInstanceData             uintptr
  7005  	Ftcl_GetChannelMode                     uintptr
  7006  	Ftcl_GetChannelName                     uintptr
  7007  	Ftcl_GetChannelOption                   uintptr
  7008  	Ftcl_GetChannelType                     uintptr
  7009  	Ftcl_GetCommandInfo                     uintptr
  7010  	Ftcl_GetCommandName                     uintptr
  7011  	Ftcl_GetErrno                           uintptr
  7012  	Ftcl_GetHostName                        uintptr
  7013  	Ftcl_GetInterpPath                      uintptr
  7014  	Ftcl_GetMaster                          uintptr
  7015  	Ftcl_GetNameOfExecutable                uintptr
  7016  	Ftcl_GetObjResult                       uintptr
  7017  	Ftcl_GetOpenFile                        uintptr
  7018  	Ftcl_GetPathType                        uintptr
  7019  	Ftcl_Gets                               uintptr
  7020  	Ftcl_GetsObj                            uintptr
  7021  	Ftcl_GetServiceMode                     uintptr
  7022  	Ftcl_GetSlave                           uintptr
  7023  	Ftcl_GetStdChannel                      uintptr
  7024  	Ftcl_GetStringResult                    uintptr
  7025  	Ftcl_GetVar                             uintptr
  7026  	Ftcl_GetVar2                            uintptr
  7027  	Ftcl_GlobalEval                         uintptr
  7028  	Ftcl_GlobalEvalObj                      uintptr
  7029  	Ftcl_HideCommand                        uintptr
  7030  	Ftcl_Init                               uintptr
  7031  	Ftcl_InitHashTable                      uintptr
  7032  	Ftcl_InputBlocked                       uintptr
  7033  	Ftcl_InputBuffered                      uintptr
  7034  	Ftcl_InterpDeleted                      uintptr
  7035  	Ftcl_IsSafe                             uintptr
  7036  	Ftcl_JoinPath                           uintptr
  7037  	Ftcl_LinkVar                            uintptr
  7038  	Freserved188                            uintptr
  7039  	Ftcl_MakeFileChannel                    uintptr
  7040  	Ftcl_MakeSafe                           uintptr
  7041  	Ftcl_MakeTcpClientChannel               uintptr
  7042  	Ftcl_Merge                              uintptr
  7043  	Ftcl_NextHashEntry                      uintptr
  7044  	Ftcl_NotifyChannel                      uintptr
  7045  	Ftcl_ObjGetVar2                         uintptr
  7046  	Ftcl_ObjSetVar2                         uintptr
  7047  	Ftcl_OpenCommandChannel                 uintptr
  7048  	Ftcl_OpenFileChannel                    uintptr
  7049  	Ftcl_OpenTcpClient                      uintptr
  7050  	Ftcl_OpenTcpServer                      uintptr
  7051  	Ftcl_Preserve                           uintptr
  7052  	Ftcl_PrintDouble                        uintptr
  7053  	Ftcl_PutEnv                             uintptr
  7054  	Ftcl_PosixError                         uintptr
  7055  	Ftcl_QueueEvent                         uintptr
  7056  	Ftcl_Read                               uintptr
  7057  	Ftcl_ReapDetachedProcs                  uintptr
  7058  	Ftcl_RecordAndEval                      uintptr
  7059  	Ftcl_RecordAndEvalObj                   uintptr
  7060  	Ftcl_RegisterChannel                    uintptr
  7061  	Ftcl_RegisterObjType                    uintptr
  7062  	Ftcl_RegExpCompile                      uintptr
  7063  	Ftcl_RegExpExec                         uintptr
  7064  	Ftcl_RegExpMatch                        uintptr
  7065  	Ftcl_RegExpRange                        uintptr
  7066  	Ftcl_Release                            uintptr
  7067  	Ftcl_ResetResult                        uintptr
  7068  	Ftcl_ScanElement                        uintptr
  7069  	Ftcl_ScanCountedElement                 uintptr
  7070  	Ftcl_SeekOld                            uintptr
  7071  	Ftcl_ServiceAll                         uintptr
  7072  	Ftcl_ServiceEvent                       uintptr
  7073  	Ftcl_SetAssocData                       uintptr
  7074  	Ftcl_SetChannelBufferSize               uintptr
  7075  	Ftcl_SetChannelOption                   uintptr
  7076  	Ftcl_SetCommandInfo                     uintptr
  7077  	Ftcl_SetErrno                           uintptr
  7078  	Ftcl_SetErrorCode                       uintptr
  7079  	Ftcl_SetMaxBlockTime                    uintptr
  7080  	Ftcl_SetPanicProc                       uintptr
  7081  	Ftcl_SetRecursionLimit                  uintptr
  7082  	Ftcl_SetResult                          uintptr
  7083  	Ftcl_SetServiceMode                     uintptr
  7084  	Ftcl_SetObjErrorCode                    uintptr
  7085  	Ftcl_SetObjResult                       uintptr
  7086  	Ftcl_SetStdChannel                      uintptr
  7087  	Ftcl_SetVar                             uintptr
  7088  	Ftcl_SetVar2                            uintptr
  7089  	Ftcl_SignalId                           uintptr
  7090  	Ftcl_SignalMsg                          uintptr
  7091  	Ftcl_SourceRCFile                       uintptr
  7092  	Ftcl_SplitList                          uintptr
  7093  	Ftcl_SplitPath                          uintptr
  7094  	Ftcl_StaticPackage                      uintptr
  7095  	Ftcl_StringMatch                        uintptr
  7096  	Ftcl_TellOld                            uintptr
  7097  	Ftcl_TraceVar                           uintptr
  7098  	Ftcl_TraceVar2                          uintptr
  7099  	Ftcl_TranslateFileName                  uintptr
  7100  	Ftcl_Ungets                             uintptr
  7101  	Ftcl_UnlinkVar                          uintptr
  7102  	Ftcl_UnregisterChannel                  uintptr
  7103  	Ftcl_UnsetVar                           uintptr
  7104  	Ftcl_UnsetVar2                          uintptr
  7105  	Ftcl_UntraceVar                         uintptr
  7106  	Ftcl_UntraceVar2                        uintptr
  7107  	Ftcl_UpdateLinkedVar                    uintptr
  7108  	Ftcl_UpVar                              uintptr
  7109  	Ftcl_UpVar2                             uintptr
  7110  	Ftcl_VarEval                            uintptr
  7111  	Ftcl_VarTraceInfo                       uintptr
  7112  	Ftcl_VarTraceInfo2                      uintptr
  7113  	Ftcl_Write                              uintptr
  7114  	Ftcl_WrongNumArgs                       uintptr
  7115  	Ftcl_DumpActiveMemory                   uintptr
  7116  	Ftcl_ValidateAllMemory                  uintptr
  7117  	Ftcl_AppendResultVA                     uintptr
  7118  	Ftcl_AppendStringsToObjVA               uintptr
  7119  	Ftcl_HashStats                          uintptr
  7120  	Ftcl_ParseVar                           uintptr
  7121  	Ftcl_PkgPresent                         uintptr
  7122  	Ftcl_PkgPresentEx                       uintptr
  7123  	Ftcl_PkgProvide                         uintptr
  7124  	Ftcl_PkgRequire                         uintptr
  7125  	Ftcl_SetErrorCodeVA                     uintptr
  7126  	Ftcl_VarEvalVA                          uintptr
  7127  	Ftcl_WaitPid                            uintptr
  7128  	Ftcl_PanicVA                            uintptr
  7129  	Ftcl_GetVersion                         uintptr
  7130  	Ftcl_InitMemory                         uintptr
  7131  	Ftcl_StackChannel                       uintptr
  7132  	Ftcl_UnstackChannel                     uintptr
  7133  	Ftcl_GetStackedChannel                  uintptr
  7134  	Ftcl_SetMainLoop                        uintptr
  7135  	Freserved285                            uintptr
  7136  	Ftcl_AppendObjToObj                     uintptr
  7137  	Ftcl_CreateEncoding                     uintptr
  7138  	Ftcl_CreateThreadExitHandler            uintptr
  7139  	Ftcl_DeleteThreadExitHandler            uintptr
  7140  	Ftcl_DiscardResult                      uintptr
  7141  	Ftcl_EvalEx                             uintptr
  7142  	Ftcl_EvalObjv                           uintptr
  7143  	Ftcl_EvalObjEx                          uintptr
  7144  	Ftcl_ExitThread                         uintptr
  7145  	Ftcl_ExternalToUtf                      uintptr
  7146  	Ftcl_ExternalToUtfDString               uintptr
  7147  	Ftcl_FinalizeThread                     uintptr
  7148  	Ftcl_FinalizeNotifier                   uintptr
  7149  	Ftcl_FreeEncoding                       uintptr
  7150  	Ftcl_GetCurrentThread                   uintptr
  7151  	Ftcl_GetEncoding                        uintptr
  7152  	Ftcl_GetEncodingName                    uintptr
  7153  	Ftcl_GetEncodingNames                   uintptr
  7154  	Ftcl_GetIndexFromObjStruct              uintptr
  7155  	Ftcl_GetThreadData                      uintptr
  7156  	Ftcl_GetVar2Ex                          uintptr
  7157  	Ftcl_InitNotifier                       uintptr
  7158  	Ftcl_MutexLock                          uintptr
  7159  	Ftcl_MutexUnlock                        uintptr
  7160  	Ftcl_ConditionNotify                    uintptr
  7161  	Ftcl_ConditionWait                      uintptr
  7162  	Ftcl_NumUtfChars                        uintptr
  7163  	Ftcl_ReadChars                          uintptr
  7164  	Ftcl_RestoreResult                      uintptr
  7165  	Ftcl_SaveResult                         uintptr
  7166  	Ftcl_SetSystemEncoding                  uintptr
  7167  	Ftcl_SetVar2Ex                          uintptr
  7168  	Ftcl_ThreadAlert                        uintptr
  7169  	Ftcl_ThreadQueueEvent                   uintptr
  7170  	Ftcl_UniCharAtIndex                     uintptr
  7171  	Ftcl_UniCharToLower                     uintptr
  7172  	Ftcl_UniCharToTitle                     uintptr
  7173  	Ftcl_UniCharToUpper                     uintptr
  7174  	Ftcl_UniCharToUtf                       uintptr
  7175  	Ftcl_UtfAtIndex                         uintptr
  7176  	Ftcl_UtfCharComplete                    uintptr
  7177  	Ftcl_UtfBackslash                       uintptr
  7178  	Ftcl_UtfFindFirst                       uintptr
  7179  	Ftcl_UtfFindLast                        uintptr
  7180  	Ftcl_UtfNext                            uintptr
  7181  	Ftcl_UtfPrev                            uintptr
  7182  	Ftcl_UtfToExternal                      uintptr
  7183  	Ftcl_UtfToExternalDString               uintptr
  7184  	Ftcl_UtfToLower                         uintptr
  7185  	Ftcl_UtfToTitle                         uintptr
  7186  	Ftcl_UtfToUniChar                       uintptr
  7187  	Ftcl_UtfToUpper                         uintptr
  7188  	Ftcl_WriteChars                         uintptr
  7189  	Ftcl_WriteObj                           uintptr
  7190  	Ftcl_GetString                          uintptr
  7191  	Ftcl_GetDefaultEncodingDir              uintptr
  7192  	Ftcl_SetDefaultEncodingDir              uintptr
  7193  	Ftcl_AlertNotifier                      uintptr
  7194  	Ftcl_ServiceModeHook                    uintptr
  7195  	Ftcl_UniCharIsAlnum                     uintptr
  7196  	Ftcl_UniCharIsAlpha                     uintptr
  7197  	Ftcl_UniCharIsDigit                     uintptr
  7198  	Ftcl_UniCharIsLower                     uintptr
  7199  	Ftcl_UniCharIsSpace                     uintptr
  7200  	Ftcl_UniCharIsUpper                     uintptr
  7201  	Ftcl_UniCharIsWordChar                  uintptr
  7202  	Ftcl_UniCharLen                         uintptr
  7203  	Ftcl_UniCharNcmp                        uintptr
  7204  	Ftcl_UniCharToUtfDString                uintptr
  7205  	Ftcl_UtfToUniCharDString                uintptr
  7206  	Ftcl_GetRegExpFromObj                   uintptr
  7207  	Ftcl_EvalTokens                         uintptr
  7208  	Ftcl_FreeParse                          uintptr
  7209  	Ftcl_LogCommandInfo                     uintptr
  7210  	Ftcl_ParseBraces                        uintptr
  7211  	Ftcl_ParseCommand                       uintptr
  7212  	Ftcl_ParseExpr                          uintptr
  7213  	Ftcl_ParseQuotedString                  uintptr
  7214  	Ftcl_ParseVarName                       uintptr
  7215  	Ftcl_GetCwd                             uintptr
  7216  	Ftcl_Chdir                              uintptr
  7217  	Ftcl_Access                             uintptr
  7218  	Ftcl_Stat                               uintptr
  7219  	Ftcl_UtfNcmp                            uintptr
  7220  	Ftcl_UtfNcasecmp                        uintptr
  7221  	Ftcl_StringCaseMatch                    uintptr
  7222  	Ftcl_UniCharIsControl                   uintptr
  7223  	Ftcl_UniCharIsGraph                     uintptr
  7224  	Ftcl_UniCharIsPrint                     uintptr
  7225  	Ftcl_UniCharIsPunct                     uintptr
  7226  	Ftcl_RegExpExecObj                      uintptr
  7227  	Ftcl_RegExpGetInfo                      uintptr
  7228  	Ftcl_NewUnicodeObj                      uintptr
  7229  	Ftcl_SetUnicodeObj                      uintptr
  7230  	Ftcl_GetCharLength                      uintptr
  7231  	Ftcl_GetUniChar                         uintptr
  7232  	Ftcl_GetUnicode                         uintptr
  7233  	Ftcl_GetRange                           uintptr
  7234  	Ftcl_AppendUnicodeToObj                 uintptr
  7235  	Ftcl_RegExpMatchObj                     uintptr
  7236  	Ftcl_SetNotifier                        uintptr
  7237  	Ftcl_GetAllocMutex                      uintptr
  7238  	Ftcl_GetChannelNames                    uintptr
  7239  	Ftcl_GetChannelNamesEx                  uintptr
  7240  	Ftcl_ProcObjCmd                         uintptr
  7241  	Ftcl_ConditionFinalize                  uintptr
  7242  	Ftcl_MutexFinalize                      uintptr
  7243  	Ftcl_CreateThread                       uintptr
  7244  	Ftcl_ReadRaw                            uintptr
  7245  	Ftcl_WriteRaw                           uintptr
  7246  	Ftcl_GetTopChannel                      uintptr
  7247  	Ftcl_ChannelBuffered                    uintptr
  7248  	Ftcl_ChannelName                        uintptr
  7249  	Ftcl_ChannelVersion                     uintptr
  7250  	Ftcl_ChannelBlockModeProc               uintptr
  7251  	Ftcl_ChannelCloseProc                   uintptr
  7252  	Ftcl_ChannelClose2Proc                  uintptr
  7253  	Ftcl_ChannelInputProc                   uintptr
  7254  	Ftcl_ChannelOutputProc                  uintptr
  7255  	Ftcl_ChannelSeekProc                    uintptr
  7256  	Ftcl_ChannelSetOptionProc               uintptr
  7257  	Ftcl_ChannelGetOptionProc               uintptr
  7258  	Ftcl_ChannelWatchProc                   uintptr
  7259  	Ftcl_ChannelGetHandleProc               uintptr
  7260  	Ftcl_ChannelFlushProc                   uintptr
  7261  	Ftcl_ChannelHandlerProc                 uintptr
  7262  	Ftcl_JoinThread                         uintptr
  7263  	Ftcl_IsChannelShared                    uintptr
  7264  	Ftcl_IsChannelRegistered                uintptr
  7265  	Ftcl_CutChannel                         uintptr
  7266  	Ftcl_SpliceChannel                      uintptr
  7267  	Ftcl_ClearChannelHandlers               uintptr
  7268  	Ftcl_IsChannelExisting                  uintptr
  7269  	Ftcl_UniCharNcasecmp                    uintptr
  7270  	Ftcl_UniCharCaseMatch                   uintptr
  7271  	Ftcl_FindHashEntry                      uintptr
  7272  	Ftcl_CreateHashEntry                    uintptr
  7273  	Ftcl_InitCustomHashTable                uintptr
  7274  	Ftcl_InitObjHashTable                   uintptr
  7275  	Ftcl_CommandTraceInfo                   uintptr
  7276  	Ftcl_TraceCommand                       uintptr
  7277  	Ftcl_UntraceCommand                     uintptr
  7278  	Ftcl_AttemptAlloc                       uintptr
  7279  	Ftcl_AttemptDbCkalloc                   uintptr
  7280  	Ftcl_AttemptRealloc                     uintptr
  7281  	Ftcl_AttemptDbCkrealloc                 uintptr
  7282  	Ftcl_AttemptSetObjLength                uintptr
  7283  	Ftcl_GetChannelThread                   uintptr
  7284  	Ftcl_GetUnicodeFromObj                  uintptr
  7285  	Ftcl_GetMathFuncInfo                    uintptr
  7286  	Ftcl_ListMathFuncs                      uintptr
  7287  	Ftcl_SubstObj                           uintptr
  7288  	Ftcl_DetachChannel                      uintptr
  7289  	Ftcl_IsStandardChannel                  uintptr
  7290  	Ftcl_FSCopyFile                         uintptr
  7291  	Ftcl_FSCopyDirectory                    uintptr
  7292  	Ftcl_FSCreateDirectory                  uintptr
  7293  	Ftcl_FSDeleteFile                       uintptr
  7294  	Ftcl_FSLoadFile                         uintptr
  7295  	Ftcl_FSMatchInDirectory                 uintptr
  7296  	Ftcl_FSLink                             uintptr
  7297  	Ftcl_FSRemoveDirectory                  uintptr
  7298  	Ftcl_FSRenameFile                       uintptr
  7299  	Ftcl_FSLstat                            uintptr
  7300  	Ftcl_FSUtime                            uintptr
  7301  	Ftcl_FSFileAttrsGet                     uintptr
  7302  	Ftcl_FSFileAttrsSet                     uintptr
  7303  	Ftcl_FSFileAttrStrings                  uintptr
  7304  	Ftcl_FSStat                             uintptr
  7305  	Ftcl_FSAccess                           uintptr
  7306  	Ftcl_FSOpenFileChannel                  uintptr
  7307  	Ftcl_FSGetCwd                           uintptr
  7308  	Ftcl_FSChdir                            uintptr
  7309  	Ftcl_FSConvertToPathType                uintptr
  7310  	Ftcl_FSJoinPath                         uintptr
  7311  	Ftcl_FSSplitPath                        uintptr
  7312  	Ftcl_FSEqualPaths                       uintptr
  7313  	Ftcl_FSGetNormalizedPath                uintptr
  7314  	Ftcl_FSJoinToPath                       uintptr
  7315  	Ftcl_FSGetInternalRep                   uintptr
  7316  	Ftcl_FSGetTranslatedPath                uintptr
  7317  	Ftcl_FSEvalFile                         uintptr
  7318  	Ftcl_FSNewNativePath                    uintptr
  7319  	Ftcl_FSGetNativePath                    uintptr
  7320  	Ftcl_FSFileSystemInfo                   uintptr
  7321  	Ftcl_FSPathSeparator                    uintptr
  7322  	Ftcl_FSListVolumes                      uintptr
  7323  	Ftcl_FSRegister                         uintptr
  7324  	Ftcl_FSUnregister                       uintptr
  7325  	Ftcl_FSData                             uintptr
  7326  	Ftcl_FSGetTranslatedStringPath          uintptr
  7327  	Ftcl_FSGetFileSystemForPath             uintptr
  7328  	Ftcl_FSGetPathType                      uintptr
  7329  	Ftcl_OutputBuffered                     uintptr
  7330  	Ftcl_FSMountsChanged                    uintptr
  7331  	Ftcl_EvalTokensStandard                 uintptr
  7332  	Ftcl_GetTime                            uintptr
  7333  	Ftcl_CreateObjTrace                     uintptr
  7334  	Ftcl_GetCommandInfoFromToken            uintptr
  7335  	Ftcl_SetCommandInfoFromToken            uintptr
  7336  	Ftcl_DbNewWideIntObj                    uintptr
  7337  	Ftcl_GetWideIntFromObj                  uintptr
  7338  	Ftcl_NewWideIntObj                      uintptr
  7339  	Ftcl_SetWideIntObj                      uintptr
  7340  	Ftcl_AllocStatBuf                       uintptr
  7341  	Ftcl_Seek                               uintptr
  7342  	Ftcl_Tell                               uintptr
  7343  	Ftcl_ChannelWideSeekProc                uintptr
  7344  	Ftcl_DictObjPut                         uintptr
  7345  	Ftcl_DictObjGet                         uintptr
  7346  	Ftcl_DictObjRemove                      uintptr
  7347  	Ftcl_DictObjSize                        uintptr
  7348  	Ftcl_DictObjFirst                       uintptr
  7349  	Ftcl_DictObjNext                        uintptr
  7350  	Ftcl_DictObjDone                        uintptr
  7351  	Ftcl_DictObjPutKeyList                  uintptr
  7352  	Ftcl_DictObjRemoveKeyList               uintptr
  7353  	Ftcl_NewDictObj                         uintptr
  7354  	Ftcl_DbNewDictObj                       uintptr
  7355  	Ftcl_RegisterConfig                     uintptr
  7356  	Ftcl_CreateNamespace                    uintptr
  7357  	Ftcl_DeleteNamespace                    uintptr
  7358  	Ftcl_AppendExportList                   uintptr
  7359  	Ftcl_Export                             uintptr
  7360  	Ftcl_Import                             uintptr
  7361  	Ftcl_ForgetImport                       uintptr
  7362  	Ftcl_GetCurrentNamespace                uintptr
  7363  	Ftcl_GetGlobalNamespace                 uintptr
  7364  	Ftcl_FindNamespace                      uintptr
  7365  	Ftcl_FindCommand                        uintptr
  7366  	Ftcl_GetCommandFromObj                  uintptr
  7367  	Ftcl_GetCommandFullName                 uintptr
  7368  	Ftcl_FSEvalFileEx                       uintptr
  7369  	Ftcl_SetExitProc                        uintptr
  7370  	Ftcl_LimitAddHandler                    uintptr
  7371  	Ftcl_LimitRemoveHandler                 uintptr
  7372  	Ftcl_LimitReady                         uintptr
  7373  	Ftcl_LimitCheck                         uintptr
  7374  	Ftcl_LimitExceeded                      uintptr
  7375  	Ftcl_LimitSetCommands                   uintptr
  7376  	Ftcl_LimitSetTime                       uintptr
  7377  	Ftcl_LimitSetGranularity                uintptr
  7378  	Ftcl_LimitTypeEnabled                   uintptr
  7379  	Ftcl_LimitTypeExceeded                  uintptr
  7380  	Ftcl_LimitTypeSet                       uintptr
  7381  	Ftcl_LimitTypeReset                     uintptr
  7382  	Ftcl_LimitGetCommands                   uintptr
  7383  	Ftcl_LimitGetTime                       uintptr
  7384  	Ftcl_LimitGetGranularity                uintptr
  7385  	Ftcl_SaveInterpState                    uintptr
  7386  	Ftcl_RestoreInterpState                 uintptr
  7387  	Ftcl_DiscardInterpState                 uintptr
  7388  	Ftcl_SetReturnOptions                   uintptr
  7389  	Ftcl_GetReturnOptions                   uintptr
  7390  	Ftcl_IsEnsemble                         uintptr
  7391  	Ftcl_CreateEnsemble                     uintptr
  7392  	Ftcl_FindEnsemble                       uintptr
  7393  	Ftcl_SetEnsembleSubcommandList          uintptr
  7394  	Ftcl_SetEnsembleMappingDict             uintptr
  7395  	Ftcl_SetEnsembleUnknownHandler          uintptr
  7396  	Ftcl_SetEnsembleFlags                   uintptr
  7397  	Ftcl_GetEnsembleSubcommandList          uintptr
  7398  	Ftcl_GetEnsembleMappingDict             uintptr
  7399  	Ftcl_GetEnsembleUnknownHandler          uintptr
  7400  	Ftcl_GetEnsembleFlags                   uintptr
  7401  	Ftcl_GetEnsembleNamespace               uintptr
  7402  	Ftcl_SetTimeProc                        uintptr
  7403  	Ftcl_QueryTimeProc                      uintptr
  7404  	Ftcl_ChannelThreadActionProc            uintptr
  7405  	Ftcl_NewBignumObj                       uintptr
  7406  	Ftcl_DbNewBignumObj                     uintptr
  7407  	Ftcl_SetBignumObj                       uintptr
  7408  	Ftcl_GetBignumFromObj                   uintptr
  7409  	Ftcl_TakeBignumFromObj                  uintptr
  7410  	Ftcl_TruncateChannel                    uintptr
  7411  	Ftcl_ChannelTruncateProc                uintptr
  7412  	Ftcl_SetChannelErrorInterp              uintptr
  7413  	Ftcl_GetChannelErrorInterp              uintptr
  7414  	Ftcl_SetChannelError                    uintptr
  7415  	Ftcl_GetChannelError                    uintptr
  7416  	Ftcl_InitBignumFromDouble               uintptr
  7417  	Ftcl_GetNamespaceUnknownHandler         uintptr
  7418  	Ftcl_SetNamespaceUnknownHandler         uintptr
  7419  	Ftcl_GetEncodingFromObj                 uintptr
  7420  	Ftcl_GetEncodingSearchPath              uintptr
  7421  	Ftcl_SetEncodingSearchPath              uintptr
  7422  	Ftcl_GetEncodingNameFromEnvironment     uintptr
  7423  	Ftcl_PkgRequireProc                     uintptr
  7424  	Ftcl_AppendObjToErrorInfo               uintptr
  7425  	Ftcl_AppendLimitedToObj                 uintptr
  7426  	Ftcl_Format                             uintptr
  7427  	Ftcl_AppendFormatToObj                  uintptr
  7428  	Ftcl_ObjPrintf                          uintptr
  7429  	Ftcl_AppendPrintfToObj                  uintptr
  7430  	Ftcl_CancelEval                         uintptr
  7431  	Ftcl_Canceled                           uintptr
  7432  	Ftcl_CreatePipe                         uintptr
  7433  	Ftcl_NRCreateCommand                    uintptr
  7434  	Ftcl_NREvalObj                          uintptr
  7435  	Ftcl_NREvalObjv                         uintptr
  7436  	Ftcl_NRCmdSwap                          uintptr
  7437  	Ftcl_NRAddCallback                      uintptr
  7438  	Ftcl_NRCallObjProc                      uintptr
  7439  	Ftcl_GetFSDeviceFromStat                uintptr
  7440  	Ftcl_GetFSInodeFromStat                 uintptr
  7441  	Ftcl_GetModeFromStat                    uintptr
  7442  	Ftcl_GetLinkCountFromStat               uintptr
  7443  	Ftcl_GetUserIdFromStat                  uintptr
  7444  	Ftcl_GetGroupIdFromStat                 uintptr
  7445  	Ftcl_GetDeviceTypeFromStat              uintptr
  7446  	Ftcl_GetAccessTimeFromStat              uintptr
  7447  	Ftcl_GetModificationTimeFromStat        uintptr
  7448  	Ftcl_GetChangeTimeFromStat              uintptr
  7449  	Ftcl_GetSizeFromStat                    uintptr
  7450  	Ftcl_GetBlocksFromStat                  uintptr
  7451  	Ftcl_GetBlockSizeFromStat               uintptr
  7452  	Ftcl_SetEnsembleParameterList           uintptr
  7453  	Ftcl_GetEnsembleParameterList           uintptr
  7454  	Ftcl_ParseArgsObjv                      uintptr
  7455  	Ftcl_GetErrorLine                       uintptr
  7456  	Ftcl_SetErrorLine                       uintptr
  7457  	Ftcl_TransferResult                     uintptr
  7458  	Ftcl_InterpActive                       uintptr
  7459  	Ftcl_BackgroundException                uintptr
  7460  	Ftcl_ZlibDeflate                        uintptr
  7461  	Ftcl_ZlibInflate                        uintptr
  7462  	Ftcl_ZlibCRC32                          uintptr
  7463  	Ftcl_ZlibAdler32                        uintptr
  7464  	Ftcl_ZlibStreamInit                     uintptr
  7465  	Ftcl_ZlibStreamGetCommandName           uintptr
  7466  	Ftcl_ZlibStreamEof                      uintptr
  7467  	Ftcl_ZlibStreamChecksum                 uintptr
  7468  	Ftcl_ZlibStreamPut                      uintptr
  7469  	Ftcl_ZlibStreamGet                      uintptr
  7470  	Ftcl_ZlibStreamClose                    uintptr
  7471  	Ftcl_ZlibStreamReset                    uintptr
  7472  	Ftcl_SetStartupScript                   uintptr
  7473  	Ftcl_GetStartupScript                   uintptr
  7474  	Ftcl_CloseEx                            uintptr
  7475  	Ftcl_NRExprObj                          uintptr
  7476  	Ftcl_NRSubstObj                         uintptr
  7477  	Ftcl_LoadFile                           uintptr
  7478  	Ftcl_FindSymbol                         uintptr
  7479  	Ftcl_FSUnloadFile                       uintptr
  7480  	Ftcl_ZlibStreamSetCompressionDictionary uintptr
  7481  	Freserved631                            uintptr
  7482  	Freserved632                            uintptr
  7483  	Freserved633                            uintptr
  7484  	Freserved634                            uintptr
  7485  	Freserved635                            uintptr
  7486  	Freserved636                            uintptr
  7487  	Freserved637                            uintptr
  7488  	Freserved638                            uintptr
  7489  	Freserved639                            uintptr
  7490  	Freserved640                            uintptr
  7491  	Freserved641                            uintptr
  7492  	Freserved642                            uintptr
  7493  	Freserved643                            uintptr
  7494  	Freserved644                            uintptr
  7495  	Freserved645                            uintptr
  7496  	Freserved646                            uintptr
  7497  	Freserved647                            uintptr
  7498  	Freserved648                            uintptr
  7499  	FtclUnusedStubEntry                     uintptr
  7500  }
  7501  
  7502  type TclStubs = TclStubs1
  7503  
  7504  type TclPlatStubs = TclPlatStubs1
  7505  
  7506  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7507  	bp := tls.Alloc(88)
  7508  	defer tls.Free(88)
  7509  
  7510  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7511  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7512  		return TCL_ERROR
  7513  	}
  7514  
  7515  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7516  	return TCL_OK
  7517  }
  7518  
  7519  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7520  	bp := tls.Alloc(212)
  7521  	defer tls.Free(212)
  7522  
  7523  	var pExpert uintptr = clientData
  7524  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7525  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7526  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7527  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7528  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7529  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7530  		{},
  7531  	}
  7532  
  7533  	var rc int32 = TCL_OK
  7534  	*(*uintptr)(unsafe.Pointer(bp + 152)) = uintptr(0)
  7535  
  7536  	if objc < 2 {
  7537  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7538  		return TCL_ERROR
  7539  	}
  7540  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7541  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+144)
  7542  	if rc != TCL_OK {
  7543  		return rc
  7544  	}
  7545  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FnArg {
  7546  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FzMsg)
  7547  		return TCL_ERROR
  7548  	}
  7549  
  7550  	switch *(*int32)(unsafe.Pointer(bp + 144)) {
  7551  	case 0:
  7552  		{
  7553  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7554  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+152)
  7555  			break
  7556  
  7557  		}
  7558  
  7559  	case 1:
  7560  		{
  7561  			rc = sqlite3_expert_analyze(tls, pExpert, bp+152)
  7562  			break
  7563  
  7564  		}
  7565  
  7566  	case 2:
  7567  		{
  7568  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7569  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7570  			break
  7571  
  7572  		}
  7573  
  7574  	case 3:
  7575  		{
  7576  			*(*[5]uintptr)(unsafe.Pointer(bp + 168)) = [5]uintptr{
  7577  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7578  			}
  7579  
  7580  			var zReport uintptr
  7581  
  7582  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+160) != 0 ||
  7583  				tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168, int32(unsafe.Sizeof(uintptr(0))), ts+1971, 0, bp+208) != 0 {
  7584  				return TCL_ERROR
  7585  			}
  7586  
  7587  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 160)), 1+*(*int32)(unsafe.Pointer(bp + 208)))
  7588  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7589  			break
  7590  
  7591  		}
  7592  
  7593  	default:
  7594  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7595  		break
  7596  	}
  7597  
  7598  	if rc != TCL_OK {
  7599  		if *(*uintptr)(unsafe.Pointer(bp + 152)) != 0 {
  7600  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 152)), -1))
  7601  		} else {
  7602  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7603  		}
  7604  	}
  7605  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 152)))
  7606  	return rc
  7607  }
  7608  
  7609  type Subcmd = struct {
  7610  	FzSub        uintptr
  7611  	FnArg        int32
  7612  	F__ccgo_pad1 [4]byte
  7613  	FzMsg        uintptr
  7614  }
  7615  
  7616  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7617  	var pExpert uintptr = clientData
  7618  	sqlite3_expert_destroy(tls, pExpert)
  7619  }
  7620  
  7621  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7622  	bp := tls.Alloc(56)
  7623  	defer tls.Free(56)
  7624  
  7625  	var zCmd uintptr = uintptr(0)
  7626  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7627  	var pExpert uintptr
  7628  	var rc int32 = TCL_OK
  7629  
  7630  	if objc != 2 {
  7631  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7632  		return TCL_ERROR
  7633  	}
  7634  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40) != 0 {
  7635  		return TCL_ERROR
  7636  	}
  7637  
  7638  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7639  	if zCmd == uintptr(0) {
  7640  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7641  		return TCL_ERROR
  7642  	}
  7643  
  7644  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48)
  7645  	if pExpert == uintptr(0) {
  7646  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 48)), uintptr(0)))
  7647  		rc = TCL_ERROR
  7648  	} else {
  7649  		var p uintptr = pExpert
  7650  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  7651  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7652  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  7653  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  7654  	}
  7655  
  7656  	sqlite3.Xsqlite3_free(tls, zCmd)
  7657  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
  7658  	return rc
  7659  }
  7660  
  7661  var iCmd int32 = 0
  7662  
  7663  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  7664  	bp := tls.Alloc(16)
  7665  	defer tls.Free(16)
  7666  
  7667  	*(*[1]struct {
  7668  		FzCmd  uintptr
  7669  		FxProc uintptr
  7670  	})(unsafe.Pointer(bp)) = [1]struct {
  7671  		FzCmd  uintptr
  7672  		FxProc uintptr
  7673  	}{
  7674  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  7675  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7676  		}{test_sqlite3_expert_new}))},
  7677  	}
  7678  	var i int32
  7679  
  7680  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]struct {
  7681  		FzCmd  uintptr
  7682  		FxProc uintptr
  7683  	}{}))/uint64(unsafe.Sizeof(struct {
  7684  		FzCmd  uintptr
  7685  		FxProc uintptr
  7686  	}{})); i++ {
  7687  		var p uintptr = bp + uintptr(i)*16
  7688  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  7689  			FzCmd  uintptr
  7690  			FxProc uintptr
  7691  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  7692  			FzCmd  uintptr
  7693  			FxProc uintptr
  7694  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  7695  	}
  7696  	return TCL_OK
  7697  }
  7698  
  7699  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  7700  	bp := tls.Alloc(64)
  7701  	defer tls.Free(64)
  7702  
  7703  	var p uintptr
  7704  
  7705  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  7706  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  7707  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  7708  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  7709  		return TCL_OK
  7710  	}
  7711  	return TCL_ERROR
  7712  }
  7713  
  7714  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  7715  	bp := tls.Alloc(64)
  7716  	defer tls.Free(64)
  7717  
  7718  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  7719  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  7720  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  7721  		{FzError: ts + 2127},
  7722  		{FzError: ts + 584},
  7723  	}
  7724  	var i int32
  7725  
  7726  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([4]ErrorCode{}))/uint64(unsafe.Sizeof(ErrorCode{})); i++ {
  7727  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*16)).FzError) {
  7728  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*16)).Frc
  7729  		}
  7730  	}
  7731  
  7732  	return SQLITE_ERROR
  7733  }
  7734  
  7735  type ErrorCode = struct {
  7736  	Frc          int32
  7737  	F__ccgo_pad1 [4]byte
  7738  	FzError      uintptr
  7739  }
  7740  
  7741  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  7742  	bp := tls.Alloc(72)
  7743  	defer tls.Free(72)
  7744  
  7745  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7746  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  7747  	if rc != TCL_OK {
  7748  		return TCL_ERROR
  7749  	} else {
  7750  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  7751  		*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
  7752  
  7753  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+56, uintptr(0))
  7754  		if rc != SQLITE_OK {
  7755  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7756  			return TCL_ERROR
  7757  		}
  7758  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 1, bp+64, ts+2161, uintptr(0))
  7759  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
  7760  
  7761  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != SQLITE_OK {
  7762  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7763  			return TCL_ERROR
  7764  		}
  7765  
  7766  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  7767  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 64))
  7768  	}
  7769  
  7770  	return TCL_OK
  7771  }
  7772  
  7773  type F5tFunction1 = struct {
  7774  	Finterp  uintptr
  7775  	FpScript uintptr
  7776  }
  7777  
  7778  type F5tFunction = F5tFunction1
  7779  
  7780  type F5tApi1 = struct {
  7781  	FpApi uintptr
  7782  	FpFts uintptr
  7783  }
  7784  
  7785  type F5tApi = F5tApi1
  7786  
  7787  type F5tAuxData1 = struct{ FpObj uintptr }
  7788  
  7789  type F5tAuxData = F5tAuxData1
  7790  
  7791  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7792  	var p uintptr = pCtx
  7793  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7794  	var rc int32
  7795  
  7796  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7797  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7798  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  7799  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  7800  
  7801  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7802  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7803  		var _objPtr uintptr = pEval
  7804  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7805  			tcl.XTclFreeObj(tls, _objPtr)
  7806  		}
  7807  	}
  7808  	if rc == TCL_OK {
  7809  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7810  	}
  7811  
  7812  	return rc
  7813  }
  7814  
  7815  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  7816  	bp := tls.Alloc(88)
  7817  	defer tls.Free(88)
  7818  
  7819  	var p uintptr = pCtx
  7820  	var pEval uintptr
  7821  	var rc int32
  7822  
  7823  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7824  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7825  	libc.Xsprintf(tls, bp+8, ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  7826  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7827  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7828  	}{xF5tApi})), bp+72, uintptr(0))
  7829  
  7830  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7831  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7832  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7833  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7834  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7835  		var _objPtr uintptr = pEval
  7836  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7837  			tcl.XTclFreeObj(tls, _objPtr)
  7838  		}
  7839  	}
  7840  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7841  
  7842  	if rc == TCL_OK {
  7843  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7844  	}
  7845  
  7846  	return rc
  7847  }
  7848  
  7849  var iCmd1 sqlite3_int64 = int64(0)
  7850  
  7851  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  7852  	var pData uintptr = p
  7853  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7854  		var _objPtr uintptr = (*F5tAuxData)(unsafe.Pointer(pData)).FpObj
  7855  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7856  			tcl.XTclFreeObj(tls, _objPtr)
  7857  		}
  7858  	}
  7859  	sqlite3.Xsqlite3_free(tls, pData)
  7860  }
  7861  
  7862  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7863  	bp := tls.Alloc(684)
  7864  	defer tls.Free(684)
  7865  
  7866  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  7867  		{FzName: ts + 2185, FzMsg: ts + 584},
  7868  		{FzName: ts + 2198, FzMsg: ts + 584},
  7869  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  7870  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  7871  		{FzName: ts + 2251, FzMsg: ts + 584},
  7872  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  7873  		{FzName: ts + 2283, FzMsg: ts + 584},
  7874  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  7875  		{FzName: ts + 2304, FzMsg: ts + 584},
  7876  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  7877  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  7878  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  7879  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  7880  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  7881  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  7882  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  7883  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  7884  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  7885  		{},
  7886  	}
  7887  	var rc int32
  7888  	*(*int32)(unsafe.Pointer(bp + 488)) = 0
  7889  	var p uintptr = clientData
  7890  
  7891  	if objc < 2 {
  7892  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  7893  		return TCL_ERROR
  7894  	}
  7895  
  7896  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  7897  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+488)
  7898  	if rc != TCL_OK {
  7899  		return rc
  7900  	}
  7901  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FnArg != objc-2 {
  7902  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FzMsg)
  7903  		return TCL_ERROR
  7904  	}
  7905  
  7906  	switch *(*int32)(unsafe.Pointer(bp + 488)) {
  7907  	case 0:
  7908  		{
  7909  			var nCol int32
  7910  			nCol = (*struct {
  7911  				f func(*libc.TLS, uintptr) int32
  7912  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7913  			if rc == SQLITE_OK {
  7914  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  7915  			}
  7916  			break
  7917  
  7918  		}
  7919  	case 1:
  7920  		{
  7921  			rc = (*struct {
  7922  				f func(*libc.TLS, uintptr, uintptr) int32
  7923  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+496)
  7924  			if rc == SQLITE_OK {
  7925  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 496))))
  7926  			}
  7927  			break
  7928  
  7929  		}
  7930  	case 2:
  7931  		{
  7932  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+504) != 0 {
  7933  				return TCL_ERROR
  7934  			}
  7935  			rc = (*struct {
  7936  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7937  			})(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)
  7938  			if rc == SQLITE_OK {
  7939  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 512))))
  7940  			}
  7941  			break
  7942  
  7943  		}
  7944  	case 3:
  7945  		{
  7946  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+520)
  7947  
  7948  			(*F5tFunction)(unsafe.Pointer(bp + 528)).Finterp = interp
  7949  			(*F5tFunction)(unsafe.Pointer(bp + 528)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7950  			rc = (*struct {
  7951  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  7952  			})(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 {
  7953  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  7954  			}{xTokenizeCb})))
  7955  			if rc == SQLITE_OK {
  7956  				tcl.XTcl_ResetResult(tls, interp)
  7957  			}
  7958  			return rc
  7959  
  7960  		}
  7961  	case 4:
  7962  		{
  7963  			var nPhrase int32
  7964  			nPhrase = (*struct {
  7965  				f func(*libc.TLS, uintptr) int32
  7966  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7967  			if rc == SQLITE_OK {
  7968  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  7969  			}
  7970  			break
  7971  
  7972  		}
  7973  	case 5:
  7974  		{
  7975  			var sz int32
  7976  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+544) != 0 {
  7977  				return TCL_ERROR
  7978  			}
  7979  			sz = (*struct {
  7980  				f func(*libc.TLS, uintptr, int32) int32
  7981  			})(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)))
  7982  			if rc == SQLITE_OK {
  7983  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  7984  			}
  7985  			break
  7986  
  7987  		}
  7988  	case 6:
  7989  		{
  7990  			rc = (*struct {
  7991  				f func(*libc.TLS, uintptr, uintptr) int32
  7992  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+548)
  7993  			if rc == SQLITE_OK {
  7994  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 548))))
  7995  			}
  7996  			break
  7997  
  7998  		}
  7999  	case 7:
  8000  		{
  8001  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+552) != 0 {
  8002  				return TCL_ERROR
  8003  			}
  8004  			rc = (*struct {
  8005  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8006  			})(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)
  8007  			if rc == SQLITE_OK {
  8008  				var pList uintptr = tcl.XTcl_NewObj(tls)
  8009  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 556))))
  8010  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 560))))
  8011  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 564))))
  8012  				tcl.XTcl_SetObjResult(tls, interp, pList)
  8013  			}
  8014  			break
  8015  
  8016  		}
  8017  	case 8:
  8018  		{
  8019  			var iRowid sqlite3_int64 = (*struct {
  8020  				f func(*libc.TLS, uintptr) sqlite3_int64
  8021  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  8022  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  8023  			break
  8024  
  8025  		}
  8026  	case 9:
  8027  		{
  8028  			*(*uintptr)(unsafe.Pointer(bp + 576)) = uintptr(0)
  8029  			*(*int32)(unsafe.Pointer(bp + 584)) = 0
  8030  
  8031  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+568) != 0 {
  8032  				return TCL_ERROR
  8033  			}
  8034  			rc = (*struct {
  8035  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8036  			})(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)
  8037  			if rc == SQLITE_OK {
  8038  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 576)), *(*int32)(unsafe.Pointer(bp + 584))))
  8039  			}
  8040  			break
  8041  
  8042  		}
  8043  	case 10:
  8044  		{
  8045  			*(*int32)(unsafe.Pointer(bp + 592)) = 0
  8046  
  8047  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+588) != 0 {
  8048  				return TCL_ERROR
  8049  			}
  8050  			rc = (*struct {
  8051  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  8052  			})(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)
  8053  			if rc == SQLITE_OK {
  8054  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 592))))
  8055  			}
  8056  			break
  8057  
  8058  		}
  8059  	case 11:
  8060  		{
  8061  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+596) != 0 {
  8062  				return TCL_ERROR
  8063  			}
  8064  			(*F5tFunction)(unsafe.Pointer(bp + 600)).Finterp = interp
  8065  			(*F5tFunction)(unsafe.Pointer(bp + 600)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8066  			rc = (*struct {
  8067  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8068  			})(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 {
  8069  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8070  			}{xQueryPhraseCb})))
  8071  			if rc == SQLITE_OK {
  8072  				tcl.XTcl_ResetResult(tls, interp)
  8073  			}
  8074  			break
  8075  
  8076  		}
  8077  	case 12:
  8078  		{
  8079  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  8080  			if pData == uintptr(0) {
  8081  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  8082  				return TCL_ERROR
  8083  			}
  8084  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*8))
  8085  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  8086  			rc = (*struct {
  8087  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8088  			})(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})))
  8089  			break
  8090  
  8091  		}
  8092  	case 13:
  8093  		{
  8094  			var pData uintptr
  8095  
  8096  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+616) != 0 {
  8097  				return TCL_ERROR
  8098  			}
  8099  			pData = (*struct {
  8100  				f func(*libc.TLS, uintptr, int32) uintptr
  8101  			})(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)))
  8102  			if pData == uintptr(0) {
  8103  				tcl.XTcl_ResetResult(tls, interp)
  8104  			} else {
  8105  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  8106  				if *(*int32)(unsafe.Pointer(bp + 616)) != 0 {
  8107  					xSetAuxdataDestructor(tls, pData)
  8108  				}
  8109  			}
  8110  			break
  8111  
  8112  		}
  8113  
  8114  	case 14:
  8115  		{
  8116  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+620) != 0 {
  8117  				return TCL_ERROR
  8118  			}
  8119  			rc = (*struct {
  8120  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8121  			})(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))
  8122  			break
  8123  
  8124  		}
  8125  	case 15:
  8126  		{
  8127  			var iVal int32
  8128  
  8129  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+624) != 0 {
  8130  				return TCL_ERROR
  8131  			}
  8132  			iVal = int32((int64((*struct {
  8133  				f func(*libc.TLS, uintptr, int32) uintptr
  8134  			})(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)
  8135  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  8136  			break
  8137  
  8138  		}
  8139  
  8140  	case 16:
  8141  		{
  8142  			var zColvar uintptr
  8143  			var zOffvar uintptr
  8144  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*8))
  8145  
  8146  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+628) != 0 {
  8147  				return TCL_ERROR
  8148  			}
  8149  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  8150  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
  8151  
  8152  			rc = (*struct {
  8153  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8154  			})(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)
  8155  			if rc != SQLITE_OK {
  8156  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  8157  				return TCL_ERROR
  8158  			}
  8159  			for ; *(*int32)(unsafe.Pointer(bp + 648)) >= 0; (*struct {
  8160  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8161  			})(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) {
  8162  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 648))), 0)
  8163  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 652))), 0)
  8164  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8165  				if rc == TCL_CONTINUE {
  8166  					rc = TCL_OK
  8167  				}
  8168  				if rc != TCL_OK {
  8169  					if rc == TCL_BREAK {
  8170  						rc = TCL_OK
  8171  					}
  8172  					break
  8173  				}
  8174  			}
  8175  
  8176  			break
  8177  
  8178  		}
  8179  
  8180  	case 17:
  8181  		{
  8182  			var zColvar uintptr
  8183  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*8))
  8184  
  8185  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+656) != 0 {
  8186  				return TCL_ERROR
  8187  			}
  8188  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  8189  
  8190  			rc = (*struct {
  8191  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8192  			})(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)
  8193  			if rc != SQLITE_OK {
  8194  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8195  				return TCL_ERROR
  8196  			}
  8197  			for ; *(*int32)(unsafe.Pointer(bp + 680)) >= 0; (*struct {
  8198  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  8199  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+664, bp+680) {
  8200  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 680))), 0)
  8201  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8202  				if rc == TCL_CONTINUE {
  8203  					rc = TCL_OK
  8204  				}
  8205  				if rc != TCL_OK {
  8206  					if rc == TCL_BREAK {
  8207  						rc = TCL_OK
  8208  					}
  8209  					break
  8210  				}
  8211  			}
  8212  
  8213  			break
  8214  
  8215  		}
  8216  
  8217  	default:
  8218  		break
  8219  	}
  8220  
  8221  	if rc != SQLITE_OK {
  8222  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8223  		return TCL_ERROR
  8224  	}
  8225  
  8226  	return TCL_OK
  8227  }
  8228  
  8229  type Sub = struct {
  8230  	FzName       uintptr
  8231  	FnArg        int32
  8232  	F__ccgo_pad1 [4]byte
  8233  	FzMsg        uintptr
  8234  }
  8235  
  8236  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8237  	bp := tls.Alloc(112)
  8238  	defer tls.Free(112)
  8239  
  8240  	var p uintptr = (*struct {
  8241  		f func(*libc.TLS, uintptr) uintptr
  8242  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  8243  	var pEval uintptr
  8244  	var i int32
  8245  	var rc int32
  8246  
  8247  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  8248  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  8249  
  8250  	libc.Xsprintf(tls, bp+8, ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  8251  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  8252  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8253  	}{xF5tApi})), bp+72, uintptr(0))
  8254  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8255  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8256  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  8257  
  8258  	for i = 0; i < nVal; i++ {
  8259  		var pObj uintptr = uintptr(0)
  8260  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))) {
  8261  		case SQLITE_TEXT:
  8262  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), -1)
  8263  			break
  8264  		case SQLITE_BLOB:
  8265  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  8266  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8267  			break
  8268  		case SQLITE_INTEGER:
  8269  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8270  			break
  8271  		case SQLITE_FLOAT:
  8272  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  8273  			break
  8274  		default:
  8275  			pObj = tcl.XTcl_NewObj(tls)
  8276  			break
  8277  		}
  8278  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  8279  	}
  8280  
  8281  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8282  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8283  		var _objPtr uintptr = pEval
  8284  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8285  			tcl.XTclFreeObj(tls, _objPtr)
  8286  		}
  8287  	}
  8288  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  8289  
  8290  	if rc != TCL_OK {
  8291  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  8292  	} else {
  8293  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  8294  
  8295  		var zType uintptr = func() uintptr {
  8296  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  8297  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  8298  			}
  8299  			return ts + 584
  8300  		}()
  8301  		var c uint8 = *(*uint8)(unsafe.Pointer(zType))
  8302  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  8303  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+88)
  8304  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  8305  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  8306  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+88)
  8307  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 88)))
  8308  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  8309  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+96)
  8310  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 96)))
  8311  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  8312  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+104)
  8313  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 104)))
  8314  		} else {
  8315  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+88)
  8316  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  8317  		}
  8318  	}
  8319  }
  8320  
  8321  var iCmd2 sqlite3_int64 = int64(0)
  8322  
  8323  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  8324  	var p uintptr = pCtx
  8325  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8326  		var _objPtr uintptr = (*F5tFunction)(unsafe.Pointer(p)).FpScript
  8327  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8328  			tcl.XTclFreeObj(tls, _objPtr)
  8329  		}
  8330  	}
  8331  	tcl.XTcl_Free(tls, p)
  8332  }
  8333  
  8334  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8335  	bp := tls.Alloc(40)
  8336  	defer tls.Free(40)
  8337  
  8338  	var zName uintptr
  8339  	var pScript uintptr
  8340  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  8341  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  8342  	var pCtx uintptr = uintptr(0)
  8343  	var rc int32
  8344  
  8345  	if objc != 4 {
  8346  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8347  		return TCL_ERROR
  8348  	}
  8349  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, bp+32) != 0 {
  8350  		return TCL_ERROR
  8351  	}
  8352  
  8353  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8354  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8355  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  8356  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  8357  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  8358  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8359  
  8360  	rc = (*struct {
  8361  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8362  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FxCreateFunction})).f(tls,
  8363  		*(*uintptr)(unsafe.Pointer(bp + 32)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  8364  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8365  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  8366  	if rc != SQLITE_OK {
  8367  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  8368  		return TCL_ERROR
  8369  	}
  8370  
  8371  	return TCL_OK
  8372  }
  8373  
  8374  type F5tTokenizeCtx1 = struct {
  8375  	FpRet        uintptr
  8376  	FbSubst      int32
  8377  	F__ccgo_pad1 [4]byte
  8378  	FzInput      uintptr
  8379  }
  8380  
  8381  type F5tTokenizeCtx = F5tTokenizeCtx1
  8382  
  8383  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  8384  	var p uintptr = pCtx
  8385  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  8386  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8387  		tcl.XTcl_ListObjAppendElement(tls,
  8388  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  8389  	} else {
  8390  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8391  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  8392  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  8393  	}
  8394  	return SQLITE_OK
  8395  }
  8396  
  8397  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8398  	bp := tls.Alloc(200)
  8399  	defer tls.Free(200)
  8400  
  8401  	var zText uintptr
  8402  
  8403  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  8404  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
  8405  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
  8406  
  8407  	var pRet uintptr = uintptr(0)
  8408  
  8409  	var rc int32
  8410  
  8411  	if objc != 4 && objc != 5 {
  8412  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  8413  		return TCL_ERROR
  8414  	}
  8415  	if objc == 5 {
  8416  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
  8417  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  8418  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  8419  			return TCL_ERROR
  8420  		}
  8421  	}
  8422  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+96, bp+104) != 0 {
  8423  		return TCL_ERROR
  8424  	}
  8425  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))), bp+112, bp+120) != 0 {
  8426  		return TCL_ERROR
  8427  	}
  8428  	if *(*int32)(unsafe.Pointer(bp + 112)) == 0 {
  8429  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  8430  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8431  		return TCL_ERROR
  8432  	}
  8433  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+128)
  8434  
  8435  	rc = (*struct {
  8436  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8437  	})(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)
  8438  	if rc != SQLITE_OK {
  8439  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), 0))
  8440  		return TCL_ERROR
  8441  	}
  8442  
  8443  	rc = (*struct {
  8444  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8445  	})(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)
  8446  	if rc != SQLITE_OK {
  8447  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  8448  		return TCL_ERROR
  8449  	}
  8450  
  8451  	pRet = tcl.XTcl_NewObj(tls)
  8452  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  8453  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FbSubst = libc.Bool32(objc == 5)
  8454  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FpRet = pRet
  8455  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FzInput = zText
  8456  	rc = (*struct {
  8457  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8458  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxTokenize})).f(tls,
  8459  		*(*uintptr)(unsafe.Pointer(bp + 168)), bp+176, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 128)), *(*uintptr)(unsafe.Pointer(&struct {
  8460  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8461  		}{xTokenizeCb2})))
  8462  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
  8463  	if rc != SQLITE_OK {
  8464  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8465  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8466  			var _objPtr uintptr = pRet
  8467  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8468  				tcl.XTclFreeObj(tls, _objPtr)
  8469  			}
  8470  		}
  8471  		return TCL_ERROR
  8472  	}
  8473  
  8474  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8475  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8476  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8477  		var _objPtr uintptr = pRet
  8478  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8479  			tcl.XTclFreeObj(tls, _objPtr)
  8480  		}
  8481  	}
  8482  	return TCL_OK
  8483  }
  8484  
  8485  type F5tTokenizerContext1 = struct {
  8486  	FpCtx   uintptr
  8487  	FxToken uintptr
  8488  }
  8489  
  8490  type F5tTokenizerContext = F5tTokenizerContext1
  8491  type F5tTokenizerModule1 = struct {
  8492  	Finterp   uintptr
  8493  	FpScript  uintptr
  8494  	FpContext uintptr
  8495  }
  8496  
  8497  type F5tTokenizerModule = F5tTokenizerModule1
  8498  type F5tTokenizerInstance1 = struct {
  8499  	Finterp   uintptr
  8500  	FpScript  uintptr
  8501  	FpContext uintptr
  8502  }
  8503  
  8504  type F5tTokenizerInstance = F5tTokenizerInstance1
  8505  
  8506  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8507  	var pMod uintptr = pCtx
  8508  	var pEval uintptr
  8509  	var rc int32 = TCL_OK
  8510  	var i int32
  8511  
  8512  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8513  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8514  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8515  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)), -1)
  8516  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8517  	}
  8518  
  8519  	if rc == TCL_OK {
  8520  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8521  	}
  8522  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8523  		var _objPtr uintptr = pEval
  8524  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8525  			tcl.XTclFreeObj(tls, _objPtr)
  8526  		}
  8527  	}
  8528  
  8529  	if rc == TCL_OK {
  8530  		var pInst uintptr
  8531  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8532  		libc.Xmemset(tls, pInst, 0, uint64(unsafe.Sizeof(F5tTokenizerInstance{})))
  8533  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8534  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8535  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8536  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8537  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8538  	}
  8539  
  8540  	return rc
  8541  }
  8542  
  8543  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8544  	var pInst uintptr = p
  8545  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8546  		var _objPtr uintptr = (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript
  8547  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8548  			tcl.XTclFreeObj(tls, _objPtr)
  8549  		}
  8550  	}
  8551  	tcl.XTcl_Free(tls, pInst)
  8552  }
  8553  
  8554  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8555  	var pInst uintptr = p
  8556  	var pOldCtx uintptr
  8557  	var xOldToken uintptr
  8558  	var pEval uintptr
  8559  	var rc int32
  8560  	var zFlags uintptr
  8561  
  8562  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8563  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8564  
  8565  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8566  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8567  
  8568  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8569  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8570  	switch flags {
  8571  	case FTS5_TOKENIZE_DOCUMENT:
  8572  		zFlags = ts + 2727
  8573  		break
  8574  	case FTS5_TOKENIZE_AUX:
  8575  		zFlags = ts + 2736
  8576  		break
  8577  	case FTS5_TOKENIZE_QUERY:
  8578  		zFlags = ts + 2740
  8579  		break
  8580  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8581  		zFlags = ts + 2746
  8582  		break
  8583  	default:
  8584  		zFlags = ts + 2758
  8585  		break
  8586  	}
  8587  
  8588  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8589  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8590  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8591  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8592  		var _objPtr uintptr = pEval
  8593  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8594  			tcl.XTclFreeObj(tls, _objPtr)
  8595  		}
  8596  	}
  8597  
  8598  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8599  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8600  	return rc
  8601  }
  8602  
  8603  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8604  	bp := tls.Alloc(32)
  8605  	defer tls.Free(32)
  8606  
  8607  	var p uintptr
  8608  
  8609  	var tflags int32
  8610  	var zToken uintptr
  8611  	var rc int32
  8612  
  8613  	var zArg uintptr
  8614  	p = clientData
  8615  	tflags = 0
  8616  
  8617  	if !(objc == 5) {
  8618  		goto __1
  8619  	}
  8620  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
  8621  	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) {
  8622  		goto __3
  8623  	}
  8624  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8625  	goto __4
  8626  __3:
  8627  	goto usage
  8628  __4:
  8629  	;
  8630  	goto __2
  8631  __1:
  8632  	if !(objc != 4) {
  8633  		goto __5
  8634  	}
  8635  	goto usage
  8636  __5:
  8637  	;
  8638  __2:
  8639  	;
  8640  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+20)
  8641  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+24) != 0 ||
  8642  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+28) != 0) {
  8643  		goto __6
  8644  	}
  8645  	return TCL_ERROR
  8646  __6:
  8647  	;
  8648  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8649  		goto __7
  8650  	}
  8651  	tcl.XTcl_AppendResult(tls, interp,
  8652  		libc.VaList(bp, ts+2777, 0))
  8653  	return TCL_ERROR
  8654  __7:
  8655  	;
  8656  	rc = (*struct {
  8657  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8658  	})(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)))
  8659  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8660  	if rc == SQLITE_OK {
  8661  		return TCL_OK
  8662  	}
  8663  	return TCL_ERROR
  8664  
  8665  usage:
  8666  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  8667  	return TCL_ERROR
  8668  }
  8669  
  8670  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  8671  	var pMod uintptr = pCtx
  8672  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8673  		var _objPtr uintptr = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript
  8674  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8675  			tcl.XTclFreeObj(tls, _objPtr)
  8676  		}
  8677  	}
  8678  	tcl.XTcl_Free(tls, pMod)
  8679  }
  8680  
  8681  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  8682  	bp := tls.Alloc(56)
  8683  	defer tls.Free(56)
  8684  
  8685  	var pContext uintptr = clientData
  8686  
  8687  	var zName uintptr
  8688  	var pScript uintptr
  8689  
  8690  	var pMod uintptr
  8691  	var rc int32
  8692  
  8693  	if objc != 4 {
  8694  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8695  		return TCL_ERROR
  8696  	}
  8697  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, bp+24) != 0 {
  8698  		return TCL_ERROR
  8699  	}
  8700  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8701  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8702  
  8703  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  8704  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8705  	}{f5tTokenizerCreate}))
  8706  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  8707  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8708  	}{f5tTokenizerTokenize}))
  8709  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  8710  
  8711  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  8712  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  8713  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  8714  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  8715  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8716  	rc = (*struct {
  8717  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  8718  	})(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})))
  8719  	if rc != SQLITE_OK {
  8720  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  8721  		return TCL_ERROR
  8722  	}
  8723  
  8724  	return TCL_OK
  8725  }
  8726  
  8727  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  8728  	tcl.XTcl_Free(tls, clientData)
  8729  }
  8730  
  8731  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8732  	return TCL_OK
  8733  }
  8734  
  8735  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  8736  	var i int32
  8737  	var h uint32 = uint32(13)
  8738  	for i = n - 1; i >= 0; i-- {
  8739  		h = h<<3 ^ h ^ uint32(*(*uint8)(unsafe.Pointer(p + uintptr(i))))
  8740  	}
  8741  	return h % uint32(nSlot)
  8742  }
  8743  
  8744  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8745  	bp := tls.Alloc(8)
  8746  	defer tls.Free(8)
  8747  
  8748  	var z uintptr
  8749  
  8750  	var iVal uint32
  8751  
  8752  	if objc != 3 {
  8753  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  8754  		return TCL_ERROR
  8755  	}
  8756  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8757  		return TCL_ERROR
  8758  	}
  8759  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
  8760  
  8761  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  8762  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  8763  	return TCL_OK
  8764  }
  8765  
  8766  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8767  	bp := tls.Alloc(8)
  8768  	defer tls.Free(8)
  8769  
  8770  	var rc int32
  8771  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8772  
  8773  	if objc != 2 {
  8774  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8775  		return TCL_ERROR
  8776  	}
  8777  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8778  		return TCL_ERROR
  8779  	}
  8780  
  8781  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8782  	if rc != SQLITE_OK {
  8783  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8784  		return TCL_ERROR
  8785  	}
  8786  	return TCL_OK
  8787  }
  8788  
  8789  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8790  	bp := tls.Alloc(16)
  8791  	defer tls.Free(16)
  8792  
  8793  	var rc int32
  8794  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8795  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8796  
  8797  	if objc != 2 {
  8798  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8799  		return TCL_ERROR
  8800  	}
  8801  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
  8802  		return TCL_ERROR
  8803  	}
  8804  
  8805  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
  8806  	if rc != SQLITE_OK {
  8807  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8808  		return TCL_ERROR
  8809  	}
  8810  	return TCL_OK
  8811  }
  8812  
  8813  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  8814  	var i int32
  8815  	var pContext uintptr
  8816  
  8817  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  8818  	libc.Xmemset(tls, pContext, 0, uint64(unsafe.Sizeof(F5tTokenizerContext{})))
  8819  
  8820  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd))/uint64(unsafe.Sizeof(struct {
  8821  		FzName        uintptr
  8822  		FxProc        uintptr
  8823  		FbTokenizeCtx int32
  8824  		F__ccgo_pad1  [4]byte
  8825  	}{})); i++ {
  8826  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*24
  8827  		var pCtx uintptr = uintptr(0)
  8828  		if (*struct {
  8829  			FzName        uintptr
  8830  			FxProc        uintptr
  8831  			FbTokenizeCtx int32
  8832  			F__ccgo_pad1  [4]byte
  8833  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  8834  			pCtx = pContext
  8835  		}
  8836  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  8837  			FzName        uintptr
  8838  			FxProc        uintptr
  8839  			FbTokenizeCtx int32
  8840  			F__ccgo_pad1  [4]byte
  8841  		})(unsafe.Pointer(p)).FzName, (*struct {
  8842  			FzName        uintptr
  8843  			FxProc        uintptr
  8844  			FbTokenizeCtx int32
  8845  			F__ccgo_pad1  [4]byte
  8846  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  8847  			if i != 0 {
  8848  				return uintptr(0)
  8849  			}
  8850  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  8851  		}())
  8852  	}
  8853  
  8854  	return TCL_OK
  8855  }
  8856  
  8857  var aCmd = [8]struct {
  8858  	FzName        uintptr
  8859  	FxProc        uintptr
  8860  	FbTokenizeCtx int32
  8861  	F__ccgo_pad1  [4]byte
  8862  }{
  8863  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  8864  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  8865  	{FzName: ts + 2961, FxProc: 0},
  8866  	{FzName: ts + 2983, FxProc: 0},
  8867  	{FzName: ts + 3012, FxProc: 0},
  8868  	{FzName: ts + 3040, FxProc: 0},
  8869  	{FzName: ts + 3064, FxProc: 0},
  8870  	{FzName: ts + 3096, FxProc: 0},
  8871  }
  8872  
  8873  type Fts5MatchinfoCtx1 = struct {
  8874  	FnCol        int32
  8875  	FnPhrase     int32
  8876  	FzArg        uintptr
  8877  	FnRet        int32
  8878  	F__ccgo_pad1 [4]byte
  8879  	FaRet        uintptr
  8880  }
  8881  
  8882  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  8883  
  8884  type u32 = uint32
  8885  
  8886  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  8887  	bp := tls.Alloc(8)
  8888  	defer tls.Free(8)
  8889  
  8890  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8891  	var rc int32
  8892  
  8893  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  8894  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  8895  	if rc == SQLITE_OK {
  8896  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  8897  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8898  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8899  	}
  8900  
  8901  	return rc
  8902  }
  8903  
  8904  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f uint8) int32 {
  8905  	var ret int32 = -1
  8906  	switch int32(f) {
  8907  	case 'p':
  8908  		ret = 1
  8909  		break
  8910  	case 'c':
  8911  		ret = 1
  8912  		break
  8913  	case 'x':
  8914  		ret = 3 * nCol * nPhrase
  8915  		break
  8916  	case 'y':
  8917  		ret = nCol * nPhrase
  8918  		break
  8919  	case 'b':
  8920  		ret = (nCol + 31) / 32 * nPhrase
  8921  		break
  8922  	case 'n':
  8923  		ret = 1
  8924  		break
  8925  	case 'a':
  8926  		ret = nCol
  8927  		break
  8928  	case 'l':
  8929  		ret = nCol
  8930  		break
  8931  	case 's':
  8932  		ret = nCol
  8933  		break
  8934  	}
  8935  	return ret
  8936  }
  8937  
  8938  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  8939  	var i int32
  8940  	var n int32 = 0
  8941  	var rc int32 = SQLITE_OK
  8942  	var f uint8
  8943  	for i = 0; libc.AssignUint8(&f, *(*uint8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  8944  		rc = (*struct {
  8945  			f func(*libc.TLS, uintptr, uintptr, uintptr, uint8, uintptr) int32
  8946  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  8947  		if rc != SQLITE_OK {
  8948  			break
  8949  		}
  8950  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  8951  	}
  8952  	return rc
  8953  }
  8954  
  8955  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  8956  	bp := tls.Alloc(24)
  8957  	defer tls.Free(24)
  8958  
  8959  	var aOut uintptr = pUserData
  8960  	var iPrev int32 = -1
  8961  
  8962  	for (*struct {
  8963  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8964  	})(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 {
  8965  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8966  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+16, bp+20) {
  8967  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+1)*4))++
  8968  		if *(*int32)(unsafe.Pointer(bp + 16)) != iPrev {
  8969  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+2)*4))++
  8970  		}
  8971  		iPrev = *(*int32)(unsafe.Pointer(bp + 16))
  8972  	}
  8973  
  8974  	return SQLITE_OK
  8975  }
  8976  
  8977  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f uint8, aOut uintptr) int32 {
  8978  	bp := tls.Alloc(24)
  8979  	defer tls.Free(24)
  8980  
  8981  	var rc int32 = SQLITE_OK
  8982  	switch int32(f) {
  8983  	case 'p':
  8984  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  8985  		break
  8986  
  8987  	case 'c':
  8988  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  8989  		break
  8990  
  8991  	case 'x':
  8992  		{
  8993  			var i int32
  8994  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  8995  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  8996  				rc = (*struct {
  8997  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8998  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  8999  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9000  				}{fts5MatchinfoXCb})))
  9001  			}
  9002  			break
  9003  
  9004  		}
  9005  
  9006  	case 'n':
  9007  		{
  9008  			rc = (*struct {
  9009  				f func(*libc.TLS, uintptr, uintptr) int32
  9010  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  9011  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  9012  			break
  9013  
  9014  		}
  9015  
  9016  	case 'a':
  9017  		{
  9018  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  9019  			rc = (*struct {
  9020  				f func(*libc.TLS, uintptr, uintptr) int32
  9021  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  9022  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  9023  				libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  9024  			} else {
  9025  				var i int32
  9026  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9027  					rc = (*struct {
  9028  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  9029  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  9030  					if rc == SQLITE_OK {
  9031  						*(*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))))
  9032  					}
  9033  				}
  9034  			}
  9035  			break
  9036  
  9037  		}
  9038  
  9039  	}
  9040  	return rc
  9041  }
  9042  
  9043  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f uint8, aOut uintptr) int32 {
  9044  	bp := tls.Alloc(80)
  9045  	defer tls.Free(80)
  9046  
  9047  	var i int32
  9048  	var rc int32 = SQLITE_OK
  9049  
  9050  	switch int32(f) {
  9051  	case 'b':
  9052  		{
  9053  			var iPhrase int32
  9054  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  9055  			for i = 0; i < nInt; i++ {
  9056  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  9057  			}
  9058  
  9059  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9060  				for (*struct {
  9061  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  9062  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+16); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  9063  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  9064  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+16) {
  9065  					*(*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)
  9066  				}
  9067  			}
  9068  
  9069  			break
  9070  
  9071  		}
  9072  
  9073  	case 'x':
  9074  		fallthrough
  9075  	case 'y':
  9076  		{
  9077  			var nMul int32 = func() int32 {
  9078  				if int32(f) == 'x' {
  9079  					return 3
  9080  				}
  9081  				return 1
  9082  			}()
  9083  			var iPhrase int32
  9084  
  9085  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  9086  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  9087  			}
  9088  
  9089  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9090  				for (*struct {
  9091  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9092  				})(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 {
  9093  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  9094  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+24, bp+40, bp+44) {
  9095  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 40))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  9096  				}
  9097  			}
  9098  
  9099  			break
  9100  
  9101  		}
  9102  
  9103  	case 'l':
  9104  		{
  9105  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9106  				rc = (*struct {
  9107  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  9108  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+48)
  9109  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 48)))
  9110  			}
  9111  			break
  9112  
  9113  		}
  9114  
  9115  	case 's':
  9116  		{
  9117  			libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  9118  
  9119  			rc = (*struct {
  9120  				f func(*libc.TLS, uintptr, uintptr) int32
  9121  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+52)
  9122  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 52)); i++ {
  9123  				*(*int32)(unsafe.Pointer(bp + 60)) = 0
  9124  				var iNextPhrase int32
  9125  				var iNextOff int32
  9126  				var nSeq u32 = u32(1)
  9127  				var j int32
  9128  
  9129  				rc = (*struct {
  9130  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9131  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+56, bp+60, bp+64)
  9132  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 56)) + 1
  9133  				iNextOff = *(*int32)(unsafe.Pointer(bp + 64)) + (*struct {
  9134  					f func(*libc.TLS, uintptr, int32) int32
  9135  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  9136  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 52)); j++ {
  9137  					rc = (*struct {
  9138  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9139  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+68, bp+72, bp+76)
  9140  					if *(*int32)(unsafe.Pointer(bp + 72)) != *(*int32)(unsafe.Pointer(bp + 60)) || *(*int32)(unsafe.Pointer(bp + 76)) > iNextOff {
  9141  						break
  9142  					}
  9143  					if *(*int32)(unsafe.Pointer(bp + 68)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 76)) == iNextOff {
  9144  						nSeq++
  9145  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 68)) + 1
  9146  						iNextOff = *(*int32)(unsafe.Pointer(bp + 76)) + (*struct {
  9147  							f func(*libc.TLS, uintptr, int32) int32
  9148  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 68)))
  9149  					}
  9150  				}
  9151  
  9152  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) {
  9153  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) = nSeq
  9154  				}
  9155  			}
  9156  
  9157  			break
  9158  
  9159  		}
  9160  	}
  9161  	return rc
  9162  }
  9163  
  9164  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  9165  	bp := tls.Alloc(8)
  9166  	defer tls.Free(8)
  9167  
  9168  	var p uintptr
  9169  	var nCol int32
  9170  	var nPhrase int32
  9171  	var i int32
  9172  	var nInt int32
  9173  	var nByte sqlite3_int64
  9174  	var rc int32
  9175  
  9176  	nCol = (*struct {
  9177  		f func(*libc.TLS, uintptr) int32
  9178  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  9179  	nPhrase = (*struct {
  9180  		f func(*libc.TLS, uintptr) int32
  9181  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  9182  
  9183  	nInt = 0
  9184  	for i = 0; *(*uint8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  9185  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*uint8)(unsafe.Pointer(zArg + uintptr(i))))
  9186  		if n < 0 {
  9187  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*uint8)(unsafe.Pointer(zArg + uintptr(i))))))
  9188  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  9189  			sqlite3.Xsqlite3_free(tls, zErr)
  9190  			return uintptr(0)
  9191  		}
  9192  		nInt = nInt + n
  9193  	}
  9194  
  9195  	nByte = sqlite3_int64(uint64(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  9196  		uint64(unsafe.Sizeof(u32(0)))*uint64(nInt) +
  9197  		uint64(i+1))
  9198  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  9199  	if p == uintptr(0) {
  9200  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  9201  		return uintptr(0)
  9202  	}
  9203  	libc.Xmemset(tls, p, 0, uint64(nByte))
  9204  
  9205  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  9206  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  9207  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*32
  9208  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  9209  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  9210  	libc.Xmemcpy(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint64(i))
  9211  
  9212  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9213  		f func(*libc.TLS, uintptr, uintptr, uintptr, uint8, uintptr) int32
  9214  	}{fts5MatchinfoGlobalCb})))
  9215  	if rc != SQLITE_OK {
  9216  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9217  		sqlite3.Xsqlite3_free(tls, p)
  9218  		p = uintptr(0)
  9219  	}
  9220  
  9221  	return p
  9222  }
  9223  
  9224  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  9225  	var zArg uintptr
  9226  	var p uintptr
  9227  	var rc int32 = SQLITE_OK
  9228  
  9229  	if nVal > 0 {
  9230  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9231  	} else {
  9232  		zArg = ts + 3163
  9233  	}
  9234  
  9235  	p = (*struct {
  9236  		f func(*libc.TLS, uintptr, int32) uintptr
  9237  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  9238  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  9239  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  9240  		if p == uintptr(0) {
  9241  			rc = SQLITE_NOMEM
  9242  		} else {
  9243  			rc = (*struct {
  9244  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9245  			})(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})))
  9246  		}
  9247  	}
  9248  
  9249  	if rc == SQLITE_OK {
  9250  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9251  			f func(*libc.TLS, uintptr, uintptr, uintptr, uint8, uintptr) int32
  9252  		}{fts5MatchinfoLocalCb})))
  9253  	}
  9254  	if rc != SQLITE_OK {
  9255  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9256  	} else {
  9257  		var nByte int32 = int32(uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint64(unsafe.Sizeof(u32(0))))
  9258  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  9259  	}
  9260  }
  9261  
  9262  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  9263  	bp := tls.Alloc(8)
  9264  	defer tls.Free(8)
  9265  
  9266  	var rc int32
  9267  
  9268  	rc = fts5_api_from_db(tls, db, bp)
  9269  	if rc != SQLITE_OK {
  9270  		return rc
  9271  	}
  9272  
  9273  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  9274  		return SQLITE_ERROR
  9275  	}
  9276  
  9277  	rc = (*struct {
  9278  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  9279  	})(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 {
  9280  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  9281  	}{fts5MatchinfoFunc})), uintptr(0))
  9282  
  9283  	return rc
  9284  }
  9285  
  9286  type Fts5tokTable1 = struct {
  9287  	Fbase sqlite3_vtab
  9288  	Ftok  fts5_tokenizer
  9289  	FpTok uintptr
  9290  }
  9291  
  9292  type Fts5tokTable = Fts5tokTable1
  9293  type Fts5tokCursor1 = struct {
  9294  	Fbase        sqlite3_vtab_cursor
  9295  	FiRowid      int32
  9296  	F__ccgo_pad1 [4]byte
  9297  	FzInput      uintptr
  9298  	FnRow        int32
  9299  	F__ccgo_pad2 [4]byte
  9300  	FaRow        uintptr
  9301  }
  9302  
  9303  type Fts5tokCursor = Fts5tokCursor1
  9304  type Fts5tokRow1 = struct {
  9305  	FzToken      uintptr
  9306  	FiStart      int32
  9307  	FiEnd        int32
  9308  	FiPos        int32
  9309  	F__ccgo_pad1 [4]byte
  9310  }
  9311  
  9312  type Fts5tokRow = Fts5tokRow1
  9313  
  9314  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  9315  	var q uint8 = *(*uint8)(unsafe.Pointer(z))
  9316  
  9317  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  9318  		var iIn int32 = 1
  9319  		var iOut int32 = 0
  9320  		if int32(q) == '[' {
  9321  			q = uint8(']')
  9322  		}
  9323  
  9324  		for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  9325  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  9326  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  9327  					iIn++
  9328  					break
  9329  				} else {
  9330  					iIn = iIn + 2
  9331  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  9332  				}
  9333  			} else {
  9334  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  9335  			}
  9336  		}
  9337  
  9338  		*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
  9339  	}
  9340  }
  9341  
  9342  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  9343  	var rc int32 = SQLITE_OK
  9344  	if argc == 0 {
  9345  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  9346  	} else {
  9347  		var i int32
  9348  		var nByte int32 = 0
  9349  		var azDequote uintptr
  9350  
  9351  		for i = 0; i < argc; i++ {
  9352  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))+uint64(1))
  9353  		}
  9354  
  9355  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(argc)+uint64(nByte)))
  9356  		if azDequote == uintptr(0) {
  9357  			rc = SQLITE_NOMEM
  9358  		} else {
  9359  			var pSpace uintptr = azDequote + uintptr(argc)*8
  9360  			for i = 0; i < argc; i++ {
  9361  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
  9362  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*8)) = pSpace
  9363  				libc.Xmemcpy(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), uint64(n+1))
  9364  				fts5tokDequote(tls, pSpace)
  9365  				pSpace += uintptr(n + 1)
  9366  			}
  9367  		}
  9368  	}
  9369  
  9370  	return rc
  9371  }
  9372  
  9373  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  9374  	bp := tls.Alloc(16)
  9375  	defer tls.Free(16)
  9376  
  9377  	var pApi uintptr = pCtx
  9378  	var pTab uintptr = uintptr(0)
  9379  	var rc int32
  9380  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9381  	var nDequote int32 = 0
  9382  
  9383  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  9384  		ts+3177)
  9385  
  9386  	if rc == SQLITE_OK {
  9387  		nDequote = argc - 3
  9388  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*8, bp)
  9389  	}
  9390  
  9391  	if rc == SQLITE_OK {
  9392  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  9393  		if pTab == uintptr(0) {
  9394  			rc = SQLITE_NOMEM
  9395  		} else {
  9396  			libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(Fts5tokTable{})))
  9397  		}
  9398  	}
  9399  
  9400  	if rc == SQLITE_OK {
  9401  		*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  9402  		var zModule uintptr = uintptr(0)
  9403  		if nDequote > 0 {
  9404  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  9405  		}
  9406  
  9407  		rc = (*struct {
  9408  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  9409  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+8, pTab+24)
  9410  		if rc == SQLITE_OK {
  9411  			var azArg uintptr = func() uintptr {
  9412  				if nDequote > 1 {
  9413  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*8
  9414  				}
  9415  				return uintptr(0)
  9416  			}()
  9417  			var nArg int32
  9418  			if nDequote > 0 {
  9419  				nArg = nDequote - 1
  9420  			} else {
  9421  				nArg = 0
  9422  			}
  9423  			rc = (*struct {
  9424  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9425  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), azArg, nArg, pTab+48)
  9426  		}
  9427  	}
  9428  
  9429  	if rc != SQLITE_OK {
  9430  		sqlite3.Xsqlite3_free(tls, pTab)
  9431  		pTab = uintptr(0)
  9432  	}
  9433  
  9434  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  9435  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9436  	return rc
  9437  }
  9438  
  9439  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  9440  	var pTab uintptr = pVtab
  9441  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  9442  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  9443  	}
  9444  	sqlite3.Xsqlite3_free(tls, pTab)
  9445  	return SQLITE_OK
  9446  }
  9447  
  9448  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  9449  	var i int32
  9450  
  9451  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  9452  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  9453  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  9454  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  9455  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  9456  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  9457  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  9458  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  9459  			return SQLITE_OK
  9460  		}
  9461  	}
  9462  
  9463  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9464  
  9465  	return SQLITE_OK
  9466  }
  9467  
  9468  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9469  	var pCsr uintptr
  9470  
  9471  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9472  	if pCsr == uintptr(0) {
  9473  		return SQLITE_NOMEM
  9474  	}
  9475  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(Fts5tokCursor{})))
  9476  
  9477  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9478  	return SQLITE_OK
  9479  }
  9480  
  9481  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9482  	var i int32
  9483  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9484  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*24)).FzToken)
  9485  	}
  9486  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9487  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9488  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9489  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9490  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9491  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9492  }
  9493  
  9494  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9495  	var pCsr uintptr = pCursor
  9496  	fts5tokResetCursor(tls, pCsr)
  9497  	sqlite3.Xsqlite3_free(tls, pCsr)
  9498  	return SQLITE_OK
  9499  }
  9500  
  9501  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9502  	var pCsr uintptr = pCursor
  9503  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9504  	return SQLITE_OK
  9505  }
  9506  
  9507  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9508  	var pCsr uintptr = pCtx
  9509  	var pRow uintptr
  9510  
  9511  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9512  		var nNew int32
  9513  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9514  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9515  		} else {
  9516  			nNew = 32
  9517  		}
  9518  		var aNew uintptr
  9519  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(nNew)*uint64(unsafe.Sizeof(Fts5tokRow{})))
  9520  		if aNew == uintptr(0) {
  9521  			return SQLITE_NOMEM
  9522  		}
  9523  		libc.Xmemset(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0, uint64(unsafe.Sizeof(Fts5tokRow{}))*uint64(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow))
  9524  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9525  	}
  9526  
  9527  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24
  9528  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9529  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9530  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9531  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*24)).FiPos + func() int32 {
  9532  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9533  				return 0
  9534  			}
  9535  			return 1
  9536  		}()
  9537  	}
  9538  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9539  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9540  		return SQLITE_NOMEM
  9541  	}
  9542  	libc.Xmemcpy(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint64(nToken))
  9543  	*(*uint8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = uint8(0)
  9544  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9545  
  9546  	return SQLITE_OK
  9547  }
  9548  
  9549  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9550  	var rc int32 = SQLITE_ERROR
  9551  	var pCsr uintptr = pCursor
  9552  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9553  
  9554  	fts5tokResetCursor(tls, pCsr)
  9555  	if idxNum == 1 {
  9556  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9557  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9558  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9559  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9560  			rc = SQLITE_NOMEM
  9561  		} else {
  9562  			if nByte > 0 {
  9563  				libc.Xmemcpy(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint64(nByte))
  9564  			}
  9565  			*(*uint8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = uint8(0)
  9566  			rc = (*struct {
  9567  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9568  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9569  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9570  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9571  				}{fts5tokCb})))
  9572  		}
  9573  	}
  9574  
  9575  	if rc != SQLITE_OK {
  9576  		return rc
  9577  	}
  9578  	return fts5tokNextMethod(tls, pCursor)
  9579  }
  9580  
  9581  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9582  	var pCsr uintptr = pCursor
  9583  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9584  }
  9585  
  9586  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9587  	var pCsr uintptr = pCursor
  9588  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*24
  9589  
  9590  	switch iCol {
  9591  	case 0:
  9592  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9593  		break
  9594  	case 1:
  9595  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9596  		break
  9597  	case 2:
  9598  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9599  		break
  9600  	case 3:
  9601  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9602  		break
  9603  	default:
  9604  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9605  		break
  9606  	}
  9607  	return SQLITE_OK
  9608  }
  9609  
  9610  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9611  	var pCsr uintptr = pCursor
  9612  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9613  	return SQLITE_OK
  9614  }
  9615  
  9616  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9617  	var rc int32
  9618  
  9619  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9620  	return rc
  9621  }
  9622  
  9623  var fts5tok_module = sqlite3_module{
  9624  	FxCreate:     0,
  9625  	FxConnect:    0,
  9626  	FxBestIndex:  0,
  9627  	FxDisconnect: 0,
  9628  	FxDestroy:    0,
  9629  	FxOpen:       0,
  9630  	FxClose:      0,
  9631  	FxFilter:     0,
  9632  	FxNext:       0,
  9633  	FxEof:        0,
  9634  	FxColumn:     0,
  9635  	FxRowid:      0,
  9636  }
  9637  
  9638  type sqlite3_api_routines = sqlite3_api_routines1
  9639  
  9640  type sqlite3_loadext_entry = uintptr
  9641  
  9642  type ApndVfs = sqlite3_vfs1
  9643  type ApndFile1 = struct {
  9644  	Fbase   sqlite3_file
  9645  	FiPgOne sqlite3_int64
  9646  	FiMark  sqlite3_int64
  9647  }
  9648  
  9649  type ApndFile = ApndFile1
  9650  
  9651  var apnd_vfs = sqlite3_vfs{
  9652  	FiVersion:          3,
  9653  	FmxPathname:        1024,
  9654  	FzName:             ts + 3248,
  9655  	FxOpen:             0,
  9656  	FxDelete:           0,
  9657  	FxAccess:           0,
  9658  	FxFullPathname:     0,
  9659  	FxDlOpen:           0,
  9660  	FxDlError:          0,
  9661  	FxDlSym:            0,
  9662  	FxDlClose:          0,
  9663  	FxRandomness:       0,
  9664  	FxSleep:            0,
  9665  	FxCurrentTime:      0,
  9666  	FxGetLastError:     0,
  9667  	FxCurrentTimeInt64: 0,
  9668  	FxSetSystemCall:    0,
  9669  	FxGetSystemCall:    0,
  9670  	FxNextSystemCall:   0,
  9671  }
  9672  
  9673  var apnd_io_methods = sqlite3_io_methods{
  9674  	FiVersion:               3,
  9675  	FxClose:                 0,
  9676  	FxRead:                  0,
  9677  	FxWrite:                 0,
  9678  	FxTruncate:              0,
  9679  	FxSync:                  0,
  9680  	FxFileSize:              0,
  9681  	FxLock:                  0,
  9682  	FxUnlock:                0,
  9683  	FxCheckReservedLock:     0,
  9684  	FxFileControl:           0,
  9685  	FxSectorSize:            0,
  9686  	FxDeviceCharacteristics: 0,
  9687  	FxShmMap:                0,
  9688  	FxShmLock:               0,
  9689  	FxShmBarrier:            0,
  9690  	FxShmUnmap:              0,
  9691  	FxFetch:                 0,
  9692  	FxUnfetch:               0,
  9693  }
  9694  
  9695  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
  9696  	pFile = pFile + uintptr(1)*24
  9697  	return (*struct {
  9698  		f func(*libc.TLS, uintptr) int32
  9699  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
  9700  }
  9701  
  9702  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9703  	var paf uintptr = pFile
  9704  	pFile = pFile + uintptr(1)*24
  9705  	return (*struct {
  9706  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9707  	})(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)
  9708  }
  9709  
  9710  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
  9711  	bp := tls.Alloc(25)
  9712  	defer tls.Free(25)
  9713  
  9714  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9715  
  9716  	var i int32 = APND_MARK_FOS_SZ
  9717  	var rc int32
  9718  
  9719  	libc.Xmemcpy(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ))
  9720  	for libc.PreDecInt32(&i, 1) >= 0 {
  9721  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
  9722  		iPgOne >>= 8
  9723  	}
  9724  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9725  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
  9726  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9727  	})(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)) {
  9728  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
  9729  	}
  9730  	return rc
  9731  }
  9732  
  9733  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9734  	var paf uintptr = pFile
  9735  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
  9736  	if iWriteEnd >= int64(0x40000000) {
  9737  		return SQLITE_FULL
  9738  	}
  9739  	pFile = pFile + uintptr(1)*24
  9740  
  9741  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
  9742  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
  9743  		if SQLITE_OK != rc {
  9744  			return rc
  9745  		}
  9746  	}
  9747  	return (*struct {
  9748  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9749  	})(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)
  9750  }
  9751  
  9752  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
  9753  	var paf uintptr = pFile
  9754  	pFile = pFile + uintptr(1)*24
  9755  
  9756  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
  9757  		return SQLITE_IOERR
  9758  	}
  9759  
  9760  	return (*struct {
  9761  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
  9762  	})(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))
  9763  }
  9764  
  9765  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
  9766  	pFile = pFile + uintptr(1)*24
  9767  	return (*struct {
  9768  		f func(*libc.TLS, uintptr, int32) int32
  9769  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
  9770  }
  9771  
  9772  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
  9773  	var paf uintptr = pFile
  9774  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
  9775  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
  9776  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9777  		}
  9778  		return int64(0)
  9779  	}()
  9780  	return SQLITE_OK
  9781  }
  9782  
  9783  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9784  	pFile = pFile + uintptr(1)*24
  9785  	return (*struct {
  9786  		f func(*libc.TLS, uintptr, int32) int32
  9787  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
  9788  }
  9789  
  9790  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9791  	pFile = pFile + uintptr(1)*24
  9792  	return (*struct {
  9793  		f func(*libc.TLS, uintptr, int32) int32
  9794  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
  9795  }
  9796  
  9797  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
  9798  	pFile = pFile + uintptr(1)*24
  9799  	return (*struct {
  9800  		f func(*libc.TLS, uintptr, uintptr) int32
  9801  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
  9802  }
  9803  
  9804  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
  9805  	bp := tls.Alloc(16)
  9806  	defer tls.Free(16)
  9807  
  9808  	var paf uintptr = pFile
  9809  	var rc int32
  9810  	pFile = pFile + uintptr(1)*24
  9811  	if op == SQLITE_FCNTL_SIZE_HINT {
  9812  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9813  	}
  9814  	rc = (*struct {
  9815  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9816  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
  9817  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
  9818  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
  9819  	}
  9820  	return rc
  9821  }
  9822  
  9823  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
  9824  	pFile = pFile + uintptr(1)*24
  9825  	return (*struct {
  9826  		f func(*libc.TLS, uintptr) int32
  9827  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
  9828  }
  9829  
  9830  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
  9831  	pFile = pFile + uintptr(1)*24
  9832  	return (*struct {
  9833  		f func(*libc.TLS, uintptr) int32
  9834  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
  9835  }
  9836  
  9837  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
  9838  	pFile = pFile + uintptr(1)*24
  9839  	return (*struct {
  9840  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
  9841  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
  9842  }
  9843  
  9844  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
  9845  	pFile = pFile + uintptr(1)*24
  9846  	return (*struct {
  9847  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
  9848  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
  9849  }
  9850  
  9851  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
  9852  	pFile = pFile + uintptr(1)*24
  9853  	(*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)
  9854  }
  9855  
  9856  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
  9857  	pFile = pFile + uintptr(1)*24
  9858  	return (*struct {
  9859  		f func(*libc.TLS, uintptr, int32) int32
  9860  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
  9861  }
  9862  
  9863  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
  9864  	var p uintptr = pFile
  9865  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
  9866  		return SQLITE_IOERR
  9867  	}
  9868  	pFile = pFile + uintptr(1)*24
  9869  	return (*struct {
  9870  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
  9871  	})(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)
  9872  }
  9873  
  9874  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
  9875  	var p uintptr = pFile
  9876  	pFile = pFile + uintptr(1)*24
  9877  	return (*struct {
  9878  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
  9879  	})(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)
  9880  }
  9881  
  9882  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
  9883  	bp := tls.Alloc(25)
  9884  	defer tls.Free(25)
  9885  
  9886  	var rc int32
  9887  	var i int32
  9888  	var iMark sqlite3_int64
  9889  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
  9890  
  9891  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
  9892  		return int64(-1)
  9893  	}
  9894  	rc = (*struct {
  9895  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9896  	})(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))
  9897  	if rc != 0 {
  9898  		return int64(-1)
  9899  	}
  9900  	if libc.Xmemcmp(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ)) != 0 {
  9901  		return int64(-1)
  9902  	}
  9903  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
  9904  	for i = 1; i < 8; i++ {
  9905  		msbs = msbs - 8
  9906  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
  9907  	}
  9908  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
  9909  		return int64(-1)
  9910  	}
  9911  	if iMark&int64(0x1ff) != 0 {
  9912  		return int64(-1)
  9913  	}
  9914  	return iMark
  9915  }
  9916  
  9917  var apvfsSqliteHdr = *(*[16]uint8)(unsafe.Pointer(ts + 3288))
  9918  
  9919  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9920  	bp := tls.Alloc(16)
  9921  	defer tls.Free(16)
  9922  
  9923  	var rc int32
  9924  
  9925  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
  9926  	if iMark >= int64(0) {
  9927  		rc = (*struct {
  9928  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9929  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, int32(unsafe.Sizeof([16]uint8{})), iMark)
  9930  		if SQLITE_OK == rc &&
  9931  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]uint8{}))) == 0 &&
  9932  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
  9933  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
  9934  			return 1
  9935  		}
  9936  	}
  9937  	return 0
  9938  }
  9939  
  9940  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9941  	bp := tls.Alloc(16)
  9942  	defer tls.Free(16)
  9943  
  9944  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
  9945  		sz&int64(0x1ff) != int64(0) ||
  9946  		SQLITE_OK != (*struct {
  9947  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9948  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, int32(unsafe.Sizeof([16]uint8{})), int64(0)) ||
  9949  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]uint8{}))) != 0 {
  9950  		return 0
  9951  	} else {
  9952  		return 1
  9953  	}
  9954  	return int32(0)
  9955  }
  9956  
  9957  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
  9958  	bp := tls.Alloc(8)
  9959  	defer tls.Free(8)
  9960  
  9961  	var pApndFile uintptr = pFile
  9962  	var pBaseFile uintptr = pFile + uintptr(1)*24
  9963  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
  9964  	var rc int32
  9965  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
  9966  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
  9967  		return (*struct {
  9968  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9969  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
  9970  	}
  9971  	libc.Xmemset(tls, pApndFile, 0, uint64(unsafe.Sizeof(ApndFile{})))
  9972  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
  9973  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
  9974  
  9975  	rc = (*struct {
  9976  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9977  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
  9978  	if rc == SQLITE_OK {
  9979  		rc = (*struct {
  9980  			f func(*libc.TLS, uintptr, uintptr) int32
  9981  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
  9982  		if rc != 0 {
  9983  			(*struct {
  9984  				f func(*libc.TLS, uintptr) int32
  9985  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9986  		}
  9987  	}
  9988  	if rc != 0 {
  9989  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9990  		return rc
  9991  	}
  9992  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
  9993  		libc.Xmemmove(tls, pApndFile, pBaseFile, uint64((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile))
  9994  		return SQLITE_OK
  9995  	}
  9996  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
  9997  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
  9998  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
  9999  		return SQLITE_OK
 10000  	}
 10001  	if flags&SQLITE_OPEN_CREATE == 0 {
 10002  		(*struct {
 10003  			f func(*libc.TLS, uintptr) int32
 10004  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
 10005  		rc = SQLITE_CANTOPEN
 10006  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 10007  	} else {
 10008  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
 10009  	}
 10010  	return rc
 10011  }
 10012  
 10013  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 10014  	return (*struct {
 10015  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 10016  	})(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)
 10017  }
 10018  
 10019  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 10020  	return (*struct {
 10021  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 10022  	})(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)
 10023  }
 10024  
 10025  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 10026  	return (*struct {
 10027  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 10028  	})(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)
 10029  }
 10030  
 10031  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 10032  	return (*struct {
 10033  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10034  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 10035  }
 10036  
 10037  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 10038  	(*struct {
 10039  		f func(*libc.TLS, uintptr, int32, uintptr)
 10040  	})(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)
 10041  }
 10042  
 10043  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 10044  	return (*struct {
 10045  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 10046  	})(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)
 10047  }
 10048  
 10049  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 10050  	(*struct {
 10051  		f func(*libc.TLS, uintptr, uintptr)
 10052  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 10053  }
 10054  
 10055  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 10056  	return (*struct {
 10057  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10058  	})(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)
 10059  }
 10060  
 10061  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 10062  	return (*struct {
 10063  		f func(*libc.TLS, uintptr, int32) int32
 10064  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 10065  }
 10066  
 10067  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 10068  	return (*struct {
 10069  		f func(*libc.TLS, uintptr, uintptr) int32
 10070  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 10071  }
 10072  
 10073  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 10074  	return (*struct {
 10075  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10076  	})(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)
 10077  }
 10078  
 10079  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 10080  	return (*struct {
 10081  		f func(*libc.TLS, uintptr, uintptr) int32
 10082  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
 10083  }
 10084  
 10085  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 10086  	return (*struct {
 10087  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 10088  	})(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)
 10089  }
 10090  
 10091  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 10092  	return (*struct {
 10093  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 10094  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10095  }
 10096  
 10097  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 10098  	return (*struct {
 10099  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10100  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10101  }
 10102  
 10103  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 10104  	var rc int32 = SQLITE_OK
 10105  	var pOrig uintptr
 10106  	_ = pApi
 10107  
 10108  	_ = pzErrMsg
 10109  	_ = db
 10110  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 10111  	if pOrig == uintptr(0) {
 10112  		return SQLITE_ERROR
 10113  	}
 10114  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 10115  	apnd_vfs.FpAppData = pOrig
 10116  	apnd_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(ApndFile{})))
 10117  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
 10118  	if rc == SQLITE_OK {
 10119  		rc = SQLITE_OK | int32(1)<<8
 10120  	}
 10121  	return rc
 10122  }
 10123  
 10124  type idtype_t = uint32
 10125  
 10126  type div_t = struct {
 10127  	Fquot int32
 10128  	Frem  int32
 10129  }
 10130  
 10131  type ldiv_t = struct {
 10132  	Fquot int64
 10133  	Frem  int64
 10134  }
 10135  
 10136  type lldiv_t = struct {
 10137  	Fquot int64
 10138  	Frem  int64
 10139  }
 10140  
 10141  type u_char = uint8
 10142  type u_short = uint16
 10143  type u_int = uint32
 10144  type u_long = uint64
 10145  type quad_t = int64
 10146  type u_quad_t = uint64
 10147  type fsid_t = struct{ F__val [2]int32 }
 10148  type loff_t = int64
 10149  
 10150  type ino_t = uint64
 10151  
 10152  type dev_t = uint64
 10153  
 10154  type gid_t = uint32
 10155  
 10156  type mode_t = uint32
 10157  
 10158  type nlink_t = uint32
 10159  
 10160  type uid_t = uint32
 10161  
 10162  type pid_t = int32
 10163  
 10164  type id_t = uint32
 10165  
 10166  type daddr_t = int32
 10167  type caddr_t = uintptr
 10168  
 10169  type key_t = int32
 10170  
 10171  type clock_t = int64
 10172  
 10173  type clockid_t = int32
 10174  
 10175  type time_t = int64
 10176  
 10177  type timer_t = uintptr
 10178  
 10179  type ulong = uint64
 10180  type ushort = uint16
 10181  type uint = uint32
 10182  
 10183  type int8_t = int8
 10184  type int16_t = int16
 10185  type int32_t = int32
 10186  type int64_t = int64
 10187  
 10188  type u_int8_t = uint8
 10189  type u_int16_t = uint16
 10190  type u_int32_t = uint32
 10191  type u_int64_t = uint64
 10192  
 10193  type register_t = int32
 10194  
 10195  type sigset_t = struct{ F__val [16]uint64 }
 10196  
 10197  type timeval = struct {
 10198  	Ftv_sec  int64
 10199  	Ftv_usec int64
 10200  }
 10201  
 10202  type timespec = struct {
 10203  	Ftv_sec  int64
 10204  	Ftv_nsec int64
 10205  }
 10206  
 10207  type suseconds_t = int64
 10208  
 10209  type fd_set = struct{ F__fds_bits [16]int64 }
 10210  
 10211  type fd_mask = int64
 10212  
 10213  type blksize_t = int32
 10214  
 10215  type blkcnt_t = int64
 10216  type fsblkcnt_t = uint64
 10217  type fsfilcnt_t = uint64
 10218  
 10219  type __pthread_internal_list = struct {
 10220  	F__prev uintptr
 10221  	F__next uintptr
 10222  }
 10223  
 10224  type __pthread_internal_slist = struct{ F__next uintptr }
 10225  
 10226  type __pthread_mutex_s = struct {
 10227  	F__lock   int32
 10228  	F__count  uint32
 10229  	F__owner  int32
 10230  	F__nusers uint32
 10231  	F__kind   int32
 10232  	F__spins  int32
 10233  	F__list   struct {
 10234  		F__prev uintptr
 10235  		F__next uintptr
 10236  	}
 10237  }
 10238  
 10239  type __pthread_rwlock_arch_t = struct {
 10240  	F__readers       uint32
 10241  	F__writers       uint32
 10242  	F__wrphase_futex uint32
 10243  	F__writers_futex uint32
 10244  	F__pad3          uint32
 10245  	F__pad4          uint32
 10246  	F__cur_writer    int32
 10247  	F__shared        int32
 10248  	F__pad1          uint64
 10249  	F__pad2          uint64
 10250  	F__flags         uint32
 10251  	F__ccgo_pad1     [4]byte
 10252  }
 10253  
 10254  type __pthread_cond_s = struct {
 10255  	F__0            struct{ F__wseq uint64 }
 10256  	F__8            struct{ F__g1_start uint64 }
 10257  	F__g_refs       [2]uint32
 10258  	F__g_size       [2]uint32
 10259  	F__g1_orig_size uint32
 10260  	F__wrefs        uint32
 10261  	F__g_signals    [2]uint32
 10262  }
 10263  
 10264  type pthread_t = uint64
 10265  
 10266  type pthread_mutexattr_t = struct {
 10267  	F__ccgo_pad1 [0]uint32
 10268  	F__size      [8]uint8
 10269  }
 10270  
 10271  type pthread_condattr_t = struct {
 10272  	F__ccgo_pad1 [0]uint32
 10273  	F__size      [8]uint8
 10274  }
 10275  
 10276  type pthread_key_t = uint32
 10277  
 10278  type pthread_once_t = int32
 10279  
 10280  type pthread_attr_t1 = struct {
 10281  	F__ccgo_pad1 [0]uint64
 10282  	F__size      [64]uint8
 10283  }
 10284  
 10285  type pthread_attr_t = pthread_attr_t1
 10286  
 10287  type pthread_mutex_t = struct {
 10288  	F__data      __pthread_mutex_s
 10289  	F__ccgo_pad1 [8]byte
 10290  }
 10291  
 10292  type pthread_cond_t = struct{ F__data __pthread_cond_s }
 10293  
 10294  type pthread_rwlock_t = struct{ F__data __pthread_rwlock_arch_t }
 10295  
 10296  type pthread_rwlockattr_t = struct {
 10297  	F__ccgo_pad1 [0]uint64
 10298  	F__size      [8]uint8
 10299  }
 10300  
 10301  type pthread_spinlock_t = int32
 10302  
 10303  type pthread_barrier_t = struct {
 10304  	F__ccgo_pad1 [0]uint64
 10305  	F__size      [32]uint8
 10306  }
 10307  
 10308  type pthread_barrierattr_t = struct {
 10309  	F__ccgo_pad1 [0]uint32
 10310  	F__size      [8]uint8
 10311  }
 10312  
 10313  type random_data = struct {
 10314  	Ffptr        uintptr
 10315  	Frptr        uintptr
 10316  	Fstate       uintptr
 10317  	Frand_type   int32
 10318  	Frand_deg    int32
 10319  	Frand_sep    int32
 10320  	F__ccgo_pad1 [4]byte
 10321  	Fend_ptr     uintptr
 10322  }
 10323  
 10324  type drand48_data = struct {
 10325  	F__x     [3]uint16
 10326  	F__old_x [3]uint16
 10327  	F__c     uint16
 10328  	F__init  uint16
 10329  	F__a     uint64
 10330  }
 10331  
 10332  type amatch_vtab1 = struct {
 10333  	Fbase        sqlite3_vtab
 10334  	FzClassName  uintptr
 10335  	FzDb         uintptr
 10336  	FzSelf       uintptr
 10337  	FzCostTab    uintptr
 10338  	FzVocabTab   uintptr
 10339  	FzVocabWord  uintptr
 10340  	FzVocabLang  uintptr
 10341  	FpRule       uintptr
 10342  	FrIns        amatch_cost
 10343  	FrDel        amatch_cost
 10344  	FrSub        amatch_cost
 10345  	F__ccgo_pad1 [4]byte
 10346  	Fdb          uintptr
 10347  	FpVCheck     uintptr
 10348  	FnCursor     int32
 10349  	F__ccgo_pad2 [4]byte
 10350  }
 10351  
 10352  type amatch_vtab = amatch_vtab1
 10353  type amatch_cursor1 = struct {
 10354  	Fbase        sqlite3_vtab_cursor
 10355  	FiRowid      sqlite3_int64
 10356  	FiLang       amatch_langid
 10357  	FrLimit      amatch_cost
 10358  	FnBuf        int32
 10359  	FoomErr      int32
 10360  	FnWord       int32
 10361  	F__ccgo_pad1 [4]byte
 10362  	FzBuf        uintptr
 10363  	FzInput      uintptr
 10364  	FpVtab       uintptr
 10365  	FpAllWords   uintptr
 10366  	FpCurrent    uintptr
 10367  	FpCost       uintptr
 10368  	FpWord       uintptr
 10369  }
 10370  
 10371  type amatch_cursor = amatch_cursor1
 10372  type amatch_rule1 = struct {
 10373  	FpNext       uintptr
 10374  	FzFrom       uintptr
 10375  	FrCost       amatch_cost
 10376  	FiLang       amatch_langid
 10377  	FnFrom       amatch_len
 10378  	FnTo         amatch_len
 10379  	FzTo         [4]uint8
 10380  	F__ccgo_pad1 [2]byte
 10381  }
 10382  
 10383  type amatch_rule = amatch_rule1
 10384  type amatch_word1 = struct {
 10385  	FpNext  uintptr
 10386  	FsCost  amatch_avl
 10387  	FsWord  amatch_avl
 10388  	FrCost  amatch_cost
 10389  	FiSeq   int32
 10390  	FzCost  [10]uint8
 10391  	FnMatch int16
 10392  	FzWord  [4]uint8
 10393  }
 10394  
 10395  type amatch_word = amatch_word1
 10396  type amatch_avl1 = struct {
 10397  	FpWord       uintptr
 10398  	FzKey        uintptr
 10399  	FpBefore     uintptr
 10400  	FpAfter      uintptr
 10401  	FpUp         uintptr
 10402  	Fheight      int16
 10403  	Fimbalance   int16
 10404  	F__ccgo_pad1 [4]byte
 10405  }
 10406  
 10407  type amatch_avl = amatch_avl1
 10408  
 10409  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 10410  	var hBefore int16
 10411  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10412  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 10413  	} else {
 10414  		hBefore = int16(0)
 10415  	}
 10416  	var hAfter int16
 10417  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10418  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 10419  	} else {
 10420  		hAfter = int16(0)
 10421  	}
 10422  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 10423  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 10424  		if int32(hBefore) > int32(hAfter) {
 10425  			return int32(hBefore)
 10426  		}
 10427  		return int32(hAfter)
 10428  	}() + 1)
 10429  }
 10430  
 10431  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 10432  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
 10433  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
 10434  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10435  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
 10436  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
 10437  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
 10438  	if pY != 0 {
 10439  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10440  	}
 10441  	amatchAvlRecomputeHeight(tls, pP)
 10442  	amatchAvlRecomputeHeight(tls, pB)
 10443  	return pB
 10444  }
 10445  
 10446  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 10447  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
 10448  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
 10449  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10450  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
 10451  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
 10452  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
 10453  	if pY != 0 {
 10454  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10455  	}
 10456  	amatchAvlRecomputeHeight(tls, pP)
 10457  	amatchAvlRecomputeHeight(tls, pA)
 10458  	return pA
 10459  }
 10460  
 10461  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 10462  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
 10463  	if pUp == uintptr(0) {
 10464  		return pp
 10465  	}
 10466  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 10467  		return pUp + 24
 10468  	}
 10469  	return pUp + 16
 10470  }
 10471  
 10472  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 10473  	bp := tls.Alloc(8)
 10474  	defer tls.Free(8)
 10475  	*(*uintptr)(unsafe.Pointer(bp)) = p
 10476  
 10477  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 10478  	var pp uintptr
 10479  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 10480  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 10481  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 10482  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 10483  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 10484  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
 10485  			}
 10486  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10487  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10488  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 10489  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 10490  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 10491  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
 10492  			}
 10493  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10494  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10495  		}
 10496  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 10497  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 10498  	}
 10499  	return pTop
 10500  }
 10501  
 10502  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
 10503  	var c int32
 10504  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
 10505  		if c < 0 {
 10506  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10507  		} else {
 10508  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10509  		}
 10510  	}
 10511  	return p
 10512  }
 10513  
 10514  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 10515  	if p != 0 {
 10516  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10517  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10518  		}
 10519  	}
 10520  	return p
 10521  }
 10522  
 10523  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 10524  	var c int32
 10525  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 10526  	if p == uintptr(0) {
 10527  		p = pNew
 10528  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 10529  	} else {
 10530  		for p != 0 {
 10531  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
 10532  			if c < 0 {
 10533  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10534  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10535  				} else {
 10536  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
 10537  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10538  					break
 10539  				}
 10540  			} else if c > 0 {
 10541  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10542  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10543  				} else {
 10544  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
 10545  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10546  					break
 10547  				}
 10548  			} else {
 10549  				return p
 10550  			}
 10551  		}
 10552  	}
 10553  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 10554  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 10555  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 10556  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 10557  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
 10558  
 10559  	return uintptr(0)
 10560  }
 10561  
 10562  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
 10563  	var ppParent uintptr
 10564  	var pBalance uintptr = uintptr(0)
 10565  
 10566  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
 10567  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10568  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
 10569  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10570  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
 10571  		var pX uintptr
 10572  		var pY uintptr
 10573  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10574  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
 10575  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10576  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10577  		}
 10578  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10579  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
 10580  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10581  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
 10582  		} else {
 10583  			pBalance = pX
 10584  		}
 10585  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10586  		if pY != 0 {
 10587  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
 10588  		}
 10589  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10590  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
 10591  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
 10592  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10593  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10594  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10595  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10596  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10597  	}
 10598  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
 10599  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
 10600  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
 10601  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
 10602  
 10603  }
 10604  
 10605  type amatch_cost = int32
 10606  type amatch_len = int8
 10607  type amatch_langid = int32
 10608  
 10609  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 10610  	bp := tls.Alloc(32)
 10611  	defer tls.Free(32)
 10612  
 10613  	var pTail uintptr
 10614  
 10615  	pTail = bp
 10616  	for pA != 0 && pB != 0 {
 10617  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
 10618  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10619  			pTail = pA
 10620  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
 10621  		} else {
 10622  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10623  			pTail = pB
 10624  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
 10625  		}
 10626  	}
 10627  	if pA == uintptr(0) {
 10628  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10629  	} else {
 10630  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10631  	}
 10632  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
 10633  }
 10634  
 10635  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 10636  	bp := tls.Alloc(48)
 10637  	defer tls.Free(48)
 10638  
 10639  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 10640  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 10641  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 10642  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 10643  
 10644  	var rc int32 = SQLITE_OK
 10645  	var nFrom int32
 10646  	var nTo int32
 10647  	var pRule uintptr = uintptr(0)
 10648  
 10649  	if zFrom == uintptr(0) {
 10650  		zFrom = ts + 584
 10651  	}
 10652  	if zTo == uintptr(0) {
 10653  		zTo = ts + 584
 10654  	}
 10655  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 10656  	nTo = int32(libc.Xstrlen(tls, zTo))
 10657  
 10658  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 10659  		if int32(*(*uint8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*uint8)(unsafe.Pointer(zFrom + 1))) == 0 {
 10660  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 10661  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 10662  			}
 10663  		}
 10664  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 10665  		return SQLITE_OK
 10666  	}
 10667  
 10668  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 10669  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 10670  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 10671  		rc = SQLITE_ERROR
 10672  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 10673  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 10674  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 10675  		rc = SQLITE_ERROR
 10676  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 10677  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 10678  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 10679  		rc = SQLITE_ERROR
 10680  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 10681  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 10682  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 10683  		}
 10684  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 10685  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 10686  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 10687  		}
 10688  	} else {
 10689  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_rule{}))+uint64(nFrom)+uint64(nTo))
 10690  		if pRule == uintptr(0) {
 10691  			rc = SQLITE_NOMEM
 10692  		} else {
 10693  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(amatch_rule{})))
 10694  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 26 + uintptr(nTo+1)
 10695  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 10696  			libc.Xmemcpy(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 10697  			libc.Xmemcpy(tls, pRule+26, zTo, uint64(nTo+1))
 10698  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 10699  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 10700  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 10701  		}
 10702  	}
 10703  
 10704  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 10705  	return rc
 10706  }
 10707  
 10708  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 10709  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 10710  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 10711  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 10712  		sqlite3.Xsqlite3_free(tls, pRule)
 10713  	}
 10714  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 10715  }
 10716  
 10717  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 10718  	bp := tls.Alloc(192)
 10719  	defer tls.Free(192)
 10720  
 10721  	var rc int32 = SQLITE_OK
 10722  	var zSql uintptr
 10723  	var pHead uintptr = uintptr(0)
 10724  
 10725  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 10726  	if zSql == uintptr(0) {
 10727  		rc = SQLITE_NOMEM
 10728  	} else {
 10729  		var rc2 int32
 10730  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 10731  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 10732  		if rc != SQLITE_OK {
 10733  			*(*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)))
 10734  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 10735  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 10736  				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)))))
 10737  			rc = SQLITE_ERROR
 10738  		} else {
 10739  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 10740  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 10741  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 10742  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 10743  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 10744  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 10745  				}
 10746  			}
 10747  		}
 10748  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 10749  		if rc == SQLITE_OK {
 10750  			rc = rc2
 10751  		}
 10752  	}
 10753  	sqlite3.Xsqlite3_free(tls, zSql)
 10754  
 10755  	if rc == SQLITE_OK {
 10756  		var i uint32
 10757  		var pX uintptr
 10758  
 10759  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10760  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10761  		}
 10762  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 10763  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 10764  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 10765  			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++ {
 10766  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10767  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10768  			}
 10769  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10770  		}
 10771  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 10772  		i = uint32(1)
 10773  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10774  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10775  		}
 10776  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 10777  	} else {
 10778  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 10779  	}
 10780  
 10781  	return rc
 10782  }
 10783  
 10784  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 10785  	var nIn sqlite3_int64
 10786  	var zOut uintptr
 10787  
 10788  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 10789  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 10790  	if zOut != 0 {
 10791  		var q uint8 = *(*uint8)(unsafe.Pointer(zIn))
 10792  
 10793  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 10794  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 10795  		} else {
 10796  			var iOut int32 = 0
 10797  			var iIn int32
 10798  
 10799  			if int32(q) == '[' {
 10800  				q = uint8(']')
 10801  			}
 10802  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 10803  				if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 10804  					iIn++
 10805  				}
 10806  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
 10807  			}
 10808  		}
 10809  
 10810  	}
 10811  	return zOut
 10812  }
 10813  
 10814  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 10815  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 10816  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10817  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 10818  	}
 10819  }
 10820  
 10821  func amatchFree(tls *libc.TLS, p uintptr) {
 10822  	if p != 0 {
 10823  		amatchFreeRules(tls, p)
 10824  		amatchVCheckClear(tls, p)
 10825  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 10826  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 10827  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 10828  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 10829  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 10830  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 10831  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 10832  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10833  		sqlite3.Xsqlite3_free(tls, p)
 10834  	}
 10835  }
 10836  
 10837  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10838  	var p uintptr = pVtab
 10839  
 10840  	amatchFree(tls, p)
 10841  	return SQLITE_OK
 10842  }
 10843  
 10844  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 10845  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 10846  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 10847  	var i int32
 10848  	if nStr < nKey+1 {
 10849  		return uintptr(0)
 10850  	}
 10851  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 10852  		return uintptr(0)
 10853  	}
 10854  	for i = nKey; int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))))*2)))&int32(_ISspace) != 0; i++ {
 10855  	}
 10856  	if int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 10857  		return uintptr(0)
 10858  	}
 10859  	i++
 10860  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))))*2)))&int32(_ISspace) != 0 {
 10861  		i++
 10862  	}
 10863  	return zStr + uintptr(i)
 10864  }
 10865  
 10866  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10867  	bp := tls.Alloc(32)
 10868  	defer tls.Free(32)
 10869  
 10870  	var rc int32
 10871  	var pNew uintptr
 10872  	var zModule uintptr
 10873  	var zDb uintptr
 10874  	var zVal uintptr
 10875  	var i int32
 10876  	rc = SQLITE_OK
 10877  	pNew = uintptr(0)
 10878  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 10879  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 10880  
 10881  	_ = pAux
 10882  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10883  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 10884  	if !(pNew == uintptr(0)) {
 10885  		goto __1
 10886  	}
 10887  	return SQLITE_NOMEM
 10888  __1:
 10889  	;
 10890  	rc = SQLITE_NOMEM
 10891  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10892  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 10893  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 10894  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 10895  		goto __2
 10896  	}
 10897  	goto amatchConnectError
 10898  __2:
 10899  	;
 10900  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 10901  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 10902  		goto __3
 10903  	}
 10904  	goto amatchConnectError
 10905  __3:
 10906  	;
 10907  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 10908  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 10909  		goto __4
 10910  	}
 10911  	goto amatchConnectError
 10912  __4:
 10913  	;
 10914  	i = 3
 10915  __5:
 10916  	if !(i < argc) {
 10917  		goto __7
 10918  	}
 10919  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10920  	if !(zVal != 0) {
 10921  		goto __8
 10922  	}
 10923  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 10924  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 10925  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 10926  		goto __9
 10927  	}
 10928  	goto amatchConnectError
 10929  __9:
 10930  	;
 10931  	goto __6
 10932  __8:
 10933  	;
 10934  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10935  	if !(zVal != 0) {
 10936  		goto __10
 10937  	}
 10938  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 10939  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 10940  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 10941  		goto __11
 10942  	}
 10943  	goto amatchConnectError
 10944  __11:
 10945  	;
 10946  	goto __6
 10947  __10:
 10948  	;
 10949  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10950  	if !(zVal != 0) {
 10951  		goto __12
 10952  	}
 10953  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 10954  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 10955  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 10956  		goto __13
 10957  	}
 10958  	goto amatchConnectError
 10959  __13:
 10960  	;
 10961  	goto __6
 10962  __12:
 10963  	;
 10964  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10965  	if !(zVal != 0) {
 10966  		goto __14
 10967  	}
 10968  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 10969  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 10970  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10971  		goto __15
 10972  	}
 10973  	goto amatchConnectError
 10974  __15:
 10975  	;
 10976  	goto __6
 10977  __14:
 10978  	;
 10979  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 10980  	amatchFree(tls, pNew)
 10981  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10982  	return SQLITE_ERROR
 10983  	goto __6
 10984  __6:
 10985  	i++
 10986  	goto __5
 10987  	goto __7
 10988  __7:
 10989  	;
 10990  	rc = SQLITE_OK
 10991  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10992  		goto __16
 10993  	}
 10994  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 10995  	rc = SQLITE_ERROR
 10996  	goto __17
 10997  __16:
 10998  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 10999  __17:
 11000  	;
 11001  	if !(rc == SQLITE_OK) {
 11002  		goto __18
 11003  	}
 11004  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 11005  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 11006  		ts+3599)
 11007  __18:
 11008  	;
 11009  	if !(rc != SQLITE_OK) {
 11010  		goto __19
 11011  	}
 11012  	amatchFree(tls, pNew)
 11013  __19:
 11014  	;
 11015  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 11016  	return rc
 11017  
 11018  amatchConnectError:
 11019  	amatchFree(tls, pNew)
 11020  	return rc
 11021  }
 11022  
 11023  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 11024  	var p uintptr = pVTab
 11025  	var pCur uintptr
 11026  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 11027  	if pCur == uintptr(0) {
 11028  		return SQLITE_NOMEM
 11029  	}
 11030  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(amatch_cursor{})))
 11031  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 11032  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 11033  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 11034  	return SQLITE_OK
 11035  }
 11036  
 11037  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 11038  	var pWord uintptr
 11039  	var pNextWord uintptr
 11040  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 11041  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 11042  		sqlite3.Xsqlite3_free(tls, pWord)
 11043  	}
 11044  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 11045  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 11046  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 11047  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11048  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 11049  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 11050  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 11051  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 11052  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 11053  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 11054  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 11055  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 11056  }
 11057  
 11058  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 11059  	var pCur uintptr = cur
 11060  	amatchClearCursor(tls, pCur)
 11061  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 11062  	sqlite3.Xsqlite3_free(tls, pCur)
 11063  	return SQLITE_OK
 11064  }
 11065  
 11066  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 11067  	*(*uint8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 11068  	*(*uint8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 11069  	*(*uint8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 11070  	*(*uint8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 11071  }
 11072  
 11073  var a = *(*[65]uint8)(unsafe.Pointer(ts + 3666))
 11074  
 11075  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 11076  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+112)
 11077  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+112+uintptr(4))
 11078  	*(*uint8)(unsafe.Pointer(pWord + 112 + 8)) = uint8(0)
 11079  }
 11080  
 11081  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 11082  	for int32(libc.AssignPtrUint8(libc.PostIncUintptr(&dest, 1), *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 11083  	}
 11084  }
 11085  
 11086  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 11087  	for *(*uint8)(unsafe.Pointer(dest)) != 0 {
 11088  		dest++
 11089  	}
 11090  	amatchStrcpy(tls, dest, src)
 11091  }
 11092  
 11093  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 11094  	bp := tls.Alloc(4)
 11095  	defer tls.Free(4)
 11096  
 11097  	var pWord uintptr
 11098  	var pNode uintptr
 11099  	var pOther uintptr
 11100  	_ = pOther
 11101  	var nBase int32
 11102  	var nTail int32
 11103  
 11104  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 11105  		return
 11106  	}
 11107  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 11108  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 11109  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 11110  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 11111  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 11112  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 11113  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 11114  			return
 11115  		}
 11116  	}
 11117  	amatchEncodeInt(tls, nMatch, bp)
 11118  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint64(2))
 11119  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint64(nBase))
 11120  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint64(nTail+1))
 11121  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11122  	if pNode != 0 {
 11123  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 11124  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 11125  			amatchAvlRemove(tls, pCur+80, pWord+8)
 11126  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 11127  			amatchWriteCost(tls, pWord)
 11128  			pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 11129  			_ = pOther
 11130  		}
 11131  		return
 11132  	}
 11133  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_word{}))+uint64(nBase)+uint64(nTail)-uint64(1))
 11134  	if pWord == uintptr(0) {
 11135  		return
 11136  	}
 11137  	libc.Xmemset(tls, pWord, 0, uint64(unsafe.Sizeof(amatch_word{})))
 11138  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 11139  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 11140  	amatchWriteCost(tls, pWord)
 11141  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 11142  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 11143  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 11144  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 112
 11145  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 11146  	pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 11147  	_ = pOther
 11148  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 124
 11149  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 11150  	amatchStrcpy(tls, pWord+124, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11151  	pOther = amatchAvlInsert(tls, pCur+88, pWord+56)
 11152  	_ = pOther
 11153  }
 11154  
 11155  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 11156  	bp := tls.Alloc(80)
 11157  	defer tls.Free(80)
 11158  
 11159  	var pCur uintptr = cur
 11160  	var pWord uintptr = uintptr(0)
 11161  	var pNode uintptr
 11162  	var isMatch int32 = 0
 11163  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 11164  	var nWord int32
 11165  	var rc int32
 11166  	var i int32
 11167  	var zW uintptr
 11168  	var pRule uintptr
 11169  	var zBuf uintptr = uintptr(0)
 11170  	var nBuf uint8 = uint8(0)
 11171  
 11172  	var nNextIn int32
 11173  
 11174  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 11175  		var zSql uintptr
 11176  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*uint8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 11177  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 11178  				ts+3731,
 11179  				libc.VaList(bp, ts+3753,
 11180  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 11181  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 11182  		} else {
 11183  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 11184  				ts+3792,
 11185  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 11186  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 11187  		}
 11188  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+112, uintptr(0))
 11189  		sqlite3.Xsqlite3_free(tls, zSql)
 11190  		if rc != 0 {
 11191  			return rc
 11192  		}
 11193  	}
 11194  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 11195  
 11196  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 11197  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 11198  		if pNode == uintptr(0) {
 11199  			pWord = uintptr(0)
 11200  			break
 11201  		}
 11202  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 11203  		amatchAvlRemove(tls, pCur+80, pWord+8)
 11204  
 11205  		nWord = int32(libc.Xstrlen(tls, pWord+124+uintptr(2)))
 11206  		if nWord+20 > int32(nBuf) {
 11207  			nBuf = uint8(nWord + 100)
 11208  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 11209  			if zBuf == uintptr(0) {
 11210  				return SQLITE_NOMEM
 11211  			}
 11212  		}
 11213  		amatchStrcpy(tls, zBuf, pWord+124+uintptr(2))
 11214  		*(*uint8)(unsafe.Pointer(bp + 64)) = uint8(0)
 11215  		*(*uint8)(unsafe.Pointer(bp + 72)) = *(*uint8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 11216  		if *(*uint8)(unsafe.Pointer(bp + 72)) != 0 {
 11217  			for i = 1; i <= 4 && int32(*(*uint8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr(int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+i))))&0xc0 == 0x80; i++ {
 11218  				*(*uint8)(unsafe.Pointer(bp + 72 + uintptr(i))) = *(*uint8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr(int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+i)))
 11219  			}
 11220  			*(*uint8)(unsafe.Pointer(bp + 72 + uintptr(i))) = uint8(0)
 11221  			nNextIn = i
 11222  		} else {
 11223  			nNextIn = 0
 11224  		}
 11225  
 11226  		if *(*uint8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*uint8)(unsafe.Pointer(bp + 72))) != '*' {
 11227  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11228  			amatchStrcat(tls, zBuf, bp+72)
 11229  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 11230  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11231  			if rc == SQLITE_ROW {
 11232  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 11233  				if libc.Xstrncmp(tls, zBuf, zW, uint64(nWord+nNextIn)) == 0 {
 11234  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 11235  				}
 11236  			}
 11237  			*(*uint8)(unsafe.Pointer(zBuf + uintptr(nWord))) = uint8(0)
 11238  		}
 11239  
 11240  		for 1 != 0 {
 11241  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 11242  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11243  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 11244  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11245  			if rc != SQLITE_ROW {
 11246  				break
 11247  			}
 11248  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 11249  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 11250  			if libc.Xstrncmp(tls, zW, zBuf, uint64(nWord)) != 0 {
 11251  				break
 11252  			}
 11253  			if int32(*(*uint8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*uint8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 11254  				int32(*(*uint8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*uint8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 11255  				isMatch = 1
 11256  				*(*uint8)(unsafe.Pointer(bp + 72)) = uint8(0)
 11257  				nNextIn = 0
 11258  				break
 11259  			}
 11260  			*(*uint8)(unsafe.Pointer(bp + 64)) = *(*uint8)(unsafe.Pointer(zW + uintptr(nWord)))
 11261  			for i = 1; i <= 4 && int32(*(*uint8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 11262  				*(*uint8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*uint8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 11263  			}
 11264  			*(*uint8)(unsafe.Pointer(bp + 64 + uintptr(i))) = uint8(0)
 11265  			*(*uint8)(unsafe.Pointer(zBuf + uintptr(nWord))) = uint8(0)
 11266  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 11267  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 11268  					zBuf, bp+64)
 11269  			}
 11270  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 11271  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 11272  					zBuf, bp+64)
 11273  			}
 11274  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 11275  				break
 11276  			}
 11277  			*(*uint8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 11278  		}
 11279  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11280  
 11281  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 11282  			*(*uint8)(unsafe.Pointer(zBuf + uintptr(nWord))) = uint8(0)
 11283  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 11284  				zBuf, ts+584)
 11285  		}
 11286  
 11287  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 11288  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 11289  				continue
 11290  			}
 11291  			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 {
 11292  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 11293  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+124+uintptr(2), pRule+26)
 11294  			}
 11295  		}
 11296  	}
 11297  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 11298  	sqlite3.Xsqlite3_free(tls, zBuf)
 11299  	return SQLITE_OK
 11300  }
 11301  
 11302  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11303  	bp := tls.Alloc(8)
 11304  	defer tls.Free(8)
 11305  
 11306  	var pCur uintptr = pVtabCursor
 11307  	var zWord uintptr = ts + 3840
 11308  	var idx int32
 11309  
 11310  	amatchClearCursor(tls, pCur)
 11311  	idx = 0
 11312  	if idxNum&1 != 0 {
 11313  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11314  		idx++
 11315  	}
 11316  	if idxNum&2 != 0 {
 11317  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 11318  		idx++
 11319  	}
 11320  	if idxNum&4 != 0 {
 11321  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 11322  		idx++
 11323  	}
 11324  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 11325  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 11326  		return SQLITE_NOMEM
 11327  	}
 11328  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 11329  	amatchNext(tls, pVtabCursor)
 11330  
 11331  	return SQLITE_OK
 11332  }
 11333  
 11334  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11335  	var pCur uintptr = cur
 11336  	switch i {
 11337  	case AMATCH_COL_WORD:
 11338  		{
 11339  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+124+uintptr(2), -1, uintptr(0))
 11340  			break
 11341  
 11342  		}
 11343  	case AMATCH_COL_DISTANCE:
 11344  		{
 11345  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 11346  			break
 11347  
 11348  		}
 11349  	case AMATCH_COL_LANGUAGE:
 11350  		{
 11351  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 11352  			break
 11353  
 11354  		}
 11355  	case AMATCH_COL_NWORD:
 11356  		{
 11357  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 11358  			break
 11359  
 11360  		}
 11361  	default:
 11362  		{
 11363  			sqlite3.Xsqlite3_result_null(tls, ctx)
 11364  			break
 11365  
 11366  		}
 11367  	}
 11368  	return SQLITE_OK
 11369  }
 11370  
 11371  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11372  	var pCur uintptr = cur
 11373  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 11374  	return SQLITE_OK
 11375  }
 11376  
 11377  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 11378  	var pCur uintptr = cur
 11379  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 11380  }
 11381  
 11382  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11383  	var iPlan int32 = 0
 11384  	var iDistTerm int32 = -1
 11385  	var iLangTerm int32 = -1
 11386  	var i int32
 11387  	var pConstraint uintptr
 11388  
 11389  	_ = tab
 11390  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11391  	i = 0
 11392  __1:
 11393  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11394  		goto __3
 11395  	}
 11396  	{
 11397  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11398  			goto __2
 11399  		}
 11400  		if iPlan&1 == 0 &&
 11401  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 11402  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 11403  			iPlan = iPlan | 1
 11404  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 11405  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 11406  		}
 11407  		if iPlan&2 == 0 &&
 11408  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 11409  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 11410  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 11411  			iPlan = iPlan | 2
 11412  			iDistTerm = i
 11413  		}
 11414  		if iPlan&4 == 0 &&
 11415  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 11416  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 11417  			iPlan = iPlan | 4
 11418  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 11419  			iLangTerm = i
 11420  		}
 11421  
 11422  	}
 11423  	goto __2
 11424  __2:
 11425  	i++
 11426  	pConstraint += 12
 11427  	goto __1
 11428  	goto __3
 11429  __3:
 11430  	;
 11431  	if iPlan&2 != 0 {
 11432  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 11433  	}
 11434  	if iPlan&4 != 0 {
 11435  		var idx int32 = 1
 11436  		if iPlan&1 != 0 {
 11437  			idx++
 11438  		}
 11439  		if iPlan&2 != 0 {
 11440  			idx++
 11441  		}
 11442  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 11443  	}
 11444  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 11445  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 11446  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 11447  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 11448  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 11449  	}
 11450  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 11451  
 11452  	return SQLITE_OK
 11453  }
 11454  
 11455  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 11456  	bp := tls.Alloc(24)
 11457  	defer tls.Free(24)
 11458  
 11459  	var p uintptr = pVTab
 11460  	var zCmd uintptr
 11461  	_ = pRowid
 11462  	if argc == 1 {
 11463  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 11464  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11465  		return SQLITE_ERROR
 11466  	}
 11467  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 11468  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 11469  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11470  		return SQLITE_ERROR
 11471  	}
 11472  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))) != SQLITE_NULL ||
 11473  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8))) != SQLITE_NULL ||
 11474  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8))) != SQLITE_NULL {
 11475  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11476  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11477  		return SQLITE_ERROR
 11478  	}
 11479  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 11480  	if zCmd == uintptr(0) {
 11481  		return SQLITE_OK
 11482  	}
 11483  
 11484  	return SQLITE_OK
 11485  }
 11486  
 11487  var amatchModule = sqlite3_module{
 11488  	FxCreate:     0,
 11489  	FxConnect:    0,
 11490  	FxBestIndex:  0,
 11491  	FxDisconnect: 0,
 11492  	FxDestroy:    0,
 11493  	FxOpen:       0,
 11494  	FxClose:      0,
 11495  	FxFilter:     0,
 11496  	FxNext:       0,
 11497  	FxEof:        0,
 11498  	FxColumn:     0,
 11499  	FxRowid:      0,
 11500  	FxUpdate:     0,
 11501  }
 11502  
 11503  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11504  	var rc int32 = SQLITE_OK
 11505  	_ = pApi
 11506  
 11507  	_ = pzErrMsg
 11508  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 11509  	return rc
 11510  }
 11511  
 11512  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 11513  
 11514  type carray_bind1 = struct {
 11515  	FaData  uintptr
 11516  	FnData  int32
 11517  	FmFlags int32
 11518  	FxDel   uintptr
 11519  }
 11520  
 11521  type carray_bind = carray_bind1
 11522  
 11523  type carray_cursor1 = struct {
 11524  	Fbase        sqlite3_vtab_cursor
 11525  	FiRowid      sqlite3_int64
 11526  	FpPtr        uintptr
 11527  	FiCnt        sqlite3_int64
 11528  	FeType       uint8
 11529  	F__ccgo_pad1 [7]byte
 11530  }
 11531  
 11532  type carray_cursor = carray_cursor1
 11533  
 11534  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 11535  	var pNew uintptr
 11536  	var rc int32
 11537  
 11538  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 11539  		ts+3985)
 11540  	if rc == SQLITE_OK {
 11541  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 11542  		if pNew == uintptr(0) {
 11543  			return SQLITE_NOMEM
 11544  		}
 11545  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 11546  	}
 11547  	return rc
 11548  }
 11549  
 11550  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 11551  	sqlite3.Xsqlite3_free(tls, pVtab)
 11552  	return SQLITE_OK
 11553  }
 11554  
 11555  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 11556  	var pCur uintptr
 11557  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 11558  	if pCur == uintptr(0) {
 11559  		return SQLITE_NOMEM
 11560  	}
 11561  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(carray_cursor{})))
 11562  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 11563  	return SQLITE_OK
 11564  }
 11565  
 11566  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 11567  	sqlite3.Xsqlite3_free(tls, cur)
 11568  	return SQLITE_OK
 11569  }
 11570  
 11571  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 11572  	var pCur uintptr = cur
 11573  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 11574  	return SQLITE_OK
 11575  }
 11576  
 11577  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11578  	var pCur uintptr = cur
 11579  	var x sqlite3_int64 = int64(0)
 11580  	switch i {
 11581  	case CARRAY_COLUMN_POINTER:
 11582  		return SQLITE_OK
 11583  	case CARRAY_COLUMN_COUNT:
 11584  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 11585  		break
 11586  	case CARRAY_COLUMN_CTYPE:
 11587  		{
 11588  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 11589  			return SQLITE_OK
 11590  
 11591  		}
 11592  	default:
 11593  		{
 11594  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 11595  			case CARRAY_INT32:
 11596  				{
 11597  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11598  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 11599  					return SQLITE_OK
 11600  
 11601  				}
 11602  			case CARRAY_INT64:
 11603  				{
 11604  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11605  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11606  					return SQLITE_OK
 11607  
 11608  				}
 11609  			case CARRAY_DOUBLE:
 11610  				{
 11611  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11612  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11613  					return SQLITE_OK
 11614  
 11615  				}
 11616  			case CARRAY_TEXT:
 11617  				{
 11618  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11619  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)), -1, libc.UintptrFromInt32(-1))
 11620  					return SQLITE_OK
 11621  
 11622  				}
 11623  			}
 11624  
 11625  		}
 11626  	}
 11627  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 11628  	return SQLITE_OK
 11629  }
 11630  
 11631  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11632  	var pCur uintptr = cur
 11633  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 11634  	return SQLITE_OK
 11635  }
 11636  
 11637  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 11638  	var pCur uintptr = cur
 11639  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 11640  }
 11641  
 11642  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11643  	bp := tls.Alloc(8)
 11644  	defer tls.Free(8)
 11645  
 11646  	var pCur uintptr = pVtabCursor
 11647  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 11648  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 11649  	switch idxNum {
 11650  	case 1:
 11651  		{
 11652  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 11653  			if pBind == uintptr(0) {
 11654  				break
 11655  			}
 11656  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 11657  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 11658  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 11659  			break
 11660  
 11661  		}
 11662  	case 2:
 11663  		fallthrough
 11664  	case 3:
 11665  		{
 11666  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 11667  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 11668  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 11669  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 11670  				}
 11671  				return int64(0)
 11672  			}()
 11673  			if idxNum < 3 {
 11674  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 11675  			} else {
 11676  				var i uint8
 11677  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 11678  				for i = uint8(0); uint64(i) < uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 11679  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 11680  						break
 11681  					}
 11682  				}
 11683  				if uint64(i) >= uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))) {
 11684  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11685  						ts+4067, libc.VaList(bp, zType))
 11686  					return SQLITE_ERROR
 11687  				} else {
 11688  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 11689  				}
 11690  			}
 11691  			break
 11692  
 11693  		}
 11694  	}
 11695  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 11696  	return SQLITE_OK
 11697  }
 11698  
 11699  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11700  	var i int32
 11701  	var ptrIdx int32 = -1
 11702  	var cntIdx int32 = -1
 11703  	var ctypeIdx int32 = -1
 11704  
 11705  	var pConstraint uintptr
 11706  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11707  	i = 0
 11708  __1:
 11709  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11710  		goto __3
 11711  	}
 11712  	{
 11713  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11714  			goto __2
 11715  		}
 11716  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 11717  			goto __2
 11718  		}
 11719  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 11720  		case CARRAY_COLUMN_POINTER:
 11721  			ptrIdx = i
 11722  			break
 11723  		case CARRAY_COLUMN_COUNT:
 11724  			cntIdx = i
 11725  			break
 11726  		case CARRAY_COLUMN_CTYPE:
 11727  			ctypeIdx = i
 11728  			break
 11729  		}
 11730  
 11731  	}
 11732  	goto __2
 11733  __2:
 11734  	i++
 11735  	pConstraint += 12
 11736  	goto __1
 11737  	goto __3
 11738  __3:
 11739  	;
 11740  	if ptrIdx >= 0 {
 11741  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 11742  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 11743  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 11744  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 11745  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 11746  		if cntIdx >= 0 {
 11747  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 11748  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 11749  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 11750  			if ctypeIdx >= 0 {
 11751  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 11752  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 11753  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 11754  			}
 11755  		}
 11756  	} else {
 11757  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 11758  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 11759  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 11760  	}
 11761  	return SQLITE_OK
 11762  }
 11763  
 11764  var carrayModule = sqlite3_module{
 11765  	FxConnect:    0,
 11766  	FxBestIndex:  0,
 11767  	FxDisconnect: 0,
 11768  	FxOpen:       0,
 11769  	FxClose:      0,
 11770  	FxFilter:     0,
 11771  	FxNext:       0,
 11772  	FxEof:        0,
 11773  	FxColumn:     0,
 11774  	FxRowid:      0,
 11775  }
 11776  
 11777  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 11778  	var p uintptr = pPtr
 11779  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 11780  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 11781  	}
 11782  	sqlite3.Xsqlite3_free(tls, p)
 11783  }
 11784  
 11785  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 11786  	var pNew uintptr
 11787  	var i int32
 11788  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 11789  	if pNew == uintptr(0) {
 11790  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 11791  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 11792  		}
 11793  		return SQLITE_NOMEM
 11794  	}
 11795  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 11796  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 11797  	if xDestroy == libc.UintptrFromInt32(-1) {
 11798  		var sz sqlite3_int64 = sqlite3_int64(nData)
 11799  		switch mFlags & 0x03 {
 11800  		case CARRAY_INT32:
 11801  			sz = sz * int64(4)
 11802  			break
 11803  			fallthrough
 11804  		case CARRAY_INT64:
 11805  			sz = sz * int64(8)
 11806  			break
 11807  			fallthrough
 11808  		case CARRAY_DOUBLE:
 11809  			sz = sz * int64(8)
 11810  			break
 11811  			fallthrough
 11812  		case CARRAY_TEXT:
 11813  			sz = int64(uint64(sz) * uint64(unsafe.Sizeof(uintptr(0))))
 11814  			break
 11815  		}
 11816  		if mFlags&0x03 == CARRAY_TEXT {
 11817  			for i = 0; i < nData; i++ {
 11818  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11819  				if z != 0 {
 11820  					sz = sqlite3_int64(uint64(sz) + (libc.Xstrlen(tls, z) + uint64(1)))
 11821  				}
 11822  			}
 11823  		}
 11824  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 11825  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 11826  			sqlite3.Xsqlite3_free(tls, pNew)
 11827  			return SQLITE_NOMEM
 11828  		}
 11829  		if mFlags&0x03 == CARRAY_TEXT {
 11830  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 11831  			var z uintptr = az + uintptr(nData)*8
 11832  			for i = 0; i < nData; i++ {
 11833  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11834  				var n sqlite3_int64
 11835  				if zData == uintptr(0) {
 11836  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = uintptr(0)
 11837  					continue
 11838  				}
 11839  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = z
 11840  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 11841  				libc.Xmemcpy(tls, z, zData, uint64(n+int64(1)))
 11842  				z += uintptr(n + int64(1))
 11843  			}
 11844  		} else {
 11845  			libc.Xmemcpy(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint64(sz))
 11846  		}
 11847  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 11848  	} else {
 11849  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 11850  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 11851  	}
 11852  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 11853  }
 11854  
 11855  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11856  	bp := tls.Alloc(20)
 11857  	defer tls.Free(20)
 11858  
 11859  	*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11860  	if uint64(unsafe.Sizeof(sqlite3_int64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 11861  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 11862  	} else {
 11863  		*(*int32)(unsafe.Pointer(bp + 16)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) & int64(0xffffffff))
 11864  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 11865  	}
 11866  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 11867  }
 11868  
 11869  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11870  	var rc int32 = SQLITE_OK
 11871  	_ = pApi
 11872  
 11873  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 11874  	if rc == SQLITE_OK {
 11875  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 11876  			*(*uintptr)(unsafe.Pointer(&struct {
 11877  				f func(*libc.TLS, uintptr, int32, uintptr)
 11878  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 11879  	}
 11880  	return rc
 11881  }
 11882  
 11883  type CksmVfs = sqlite3_vfs1
 11884  type CksmFile1 = struct {
 11885  	Fbase        sqlite3_file
 11886  	FzFName      uintptr
 11887  	FcomputeCksm uint8
 11888  	FverifyCksm  uint8
 11889  	FisWal       uint8
 11890  	FinCkpt      uint8
 11891  	F__ccgo_pad1 [4]byte
 11892  	FpPartner    uintptr
 11893  }
 11894  
 11895  type CksmFile = CksmFile1
 11896  
 11897  type u8 = uint8
 11898  
 11899  var cksm_vfs = sqlite3_vfs{
 11900  	FiVersion:          3,
 11901  	FmxPathname:        1024,
 11902  	FzName:             ts + 4097,
 11903  	FxOpen:             0,
 11904  	FxDelete:           0,
 11905  	FxAccess:           0,
 11906  	FxFullPathname:     0,
 11907  	FxDlOpen:           0,
 11908  	FxDlError:          0,
 11909  	FxDlSym:            0,
 11910  	FxDlClose:          0,
 11911  	FxRandomness:       0,
 11912  	FxSleep:            0,
 11913  	FxCurrentTime:      0,
 11914  	FxGetLastError:     0,
 11915  	FxCurrentTimeInt64: 0,
 11916  	FxSetSystemCall:    0,
 11917  	FxGetSystemCall:    0,
 11918  	FxNextSystemCall:   0,
 11919  }
 11920  
 11921  var cksm_io_methods = sqlite3_io_methods{
 11922  	FiVersion:               3,
 11923  	FxClose:                 0,
 11924  	FxRead:                  0,
 11925  	FxWrite:                 0,
 11926  	FxTruncate:              0,
 11927  	FxSync:                  0,
 11928  	FxFileSize:              0,
 11929  	FxLock:                  0,
 11930  	FxUnlock:                0,
 11931  	FxCheckReservedLock:     0,
 11932  	FxFileControl:           0,
 11933  	FxSectorSize:            0,
 11934  	FxDeviceCharacteristics: 0,
 11935  	FxShmMap:                0,
 11936  	FxShmLock:               0,
 11937  	FxShmBarrier:            0,
 11938  	FxShmUnmap:              0,
 11939  	FxFetch:                 0,
 11940  	FxUnfetch:               0,
 11941  }
 11942  
 11943  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 11944  	bp := tls.Alloc(12)
 11945  	defer tls.Free(12)
 11946  
 11947  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 11948  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 11949  	var aData uintptr = a
 11950  	var aEnd uintptr = a + uintptr(nByte)
 11951  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 11952  
 11953  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 11954  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 11955  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 11956  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 11957  		}
 11958  	} else {
 11959  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 11960  			*(*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))
 11961  			*(*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))
 11962  			aData += 4 * uintptr(2)
 11963  		}
 11964  		*(*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
 11965  		*(*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
 11966  	}
 11967  	libc.Xmemcpy(tls, aOut, bp+4, uint64(4))
 11968  	libc.Xmemcpy(tls, aOut+uintptr(4), bp+8, uint64(4))
 11969  }
 11970  
 11971  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11972  	bp := tls.Alloc(8)
 11973  	defer tls.Free(8)
 11974  
 11975  	var nByte int32
 11976  	var data uintptr
 11977  
 11978  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11979  	if data == uintptr(0) {
 11980  		return
 11981  	}
 11982  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 11983  		return
 11984  	}
 11985  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11986  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 11987  		return
 11988  	}
 11989  	cksmCompute(tls, data, nByte-8, bp)
 11990  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint64(8)) == 0))
 11991  }
 11992  
 11993  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 11994  	var p uintptr = pFile
 11995  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11996  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 11997  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 11998  	}
 11999  	pFile = pFile + uintptr(1)*32
 12000  	return (*struct {
 12001  		f func(*libc.TLS, uintptr) int32
 12002  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 12003  }
 12004  
 12005  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 12006  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 12007  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrUint8(p+17, uint8(hasCorrectReserveSize))
 12008  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12009  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = uint8(hasCorrectReserveSize)
 12010  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = uint8(hasCorrectReserveSize)
 12011  		}
 12012  	}
 12013  }
 12014  
 12015  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 12016  	bp := tls.Alloc(24)
 12017  	defer tls.Free(24)
 12018  
 12019  	var rc int32
 12020  	var p uintptr = pFile
 12021  	pFile = pFile + uintptr(1)*32
 12022  	rc = (*struct {
 12023  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 12024  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 12025  	if rc == SQLITE_OK {
 12026  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 12027  			var d uintptr = zBuf
 12028  			var hasCorrectReserveSize uint8 = uint8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 12029  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 12030  		}
 12031  
 12032  		if iAmt >= 512 &&
 12033  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 12034  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 12035  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 12036  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint64(8)) != 0 {
 12037  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 12038  					ts+4109,
 12039  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 12040  				rc = SQLITE_IOERR | int32(32)<<8
 12041  			}
 12042  		}
 12043  	}
 12044  	return rc
 12045  }
 12046  
 12047  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 12048  	var p uintptr = pFile
 12049  	pFile = pFile + uintptr(1)*32
 12050  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 12051  		var d uintptr = zBuf
 12052  		var hasCorrectReserveSize uint8 = uint8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 12053  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 12054  	}
 12055  
 12056  	if iAmt >= 512 &&
 12057  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 12058  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 12059  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 12060  	}
 12061  	return (*struct {
 12062  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 12063  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 12064  }
 12065  
 12066  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 12067  	pFile = pFile + uintptr(1)*32
 12068  	return (*struct {
 12069  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 12070  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 12071  }
 12072  
 12073  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 12074  	pFile = pFile + uintptr(1)*32
 12075  	return (*struct {
 12076  		f func(*libc.TLS, uintptr, int32) int32
 12077  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 12078  }
 12079  
 12080  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 12081  	var p uintptr = pFile
 12082  	pFile = p + uintptr(1)*32
 12083  	return (*struct {
 12084  		f func(*libc.TLS, uintptr, uintptr) int32
 12085  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 12086  }
 12087  
 12088  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 12089  	pFile = pFile + uintptr(1)*32
 12090  	return (*struct {
 12091  		f func(*libc.TLS, uintptr, int32) int32
 12092  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 12093  }
 12094  
 12095  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 12096  	pFile = pFile + uintptr(1)*32
 12097  	return (*struct {
 12098  		f func(*libc.TLS, uintptr, int32) int32
 12099  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 12100  }
 12101  
 12102  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 12103  	pFile = pFile + uintptr(1)*32
 12104  	return (*struct {
 12105  		f func(*libc.TLS, uintptr, uintptr) int32
 12106  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 12107  }
 12108  
 12109  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 12110  	bp := tls.Alloc(16)
 12111  	defer tls.Free(16)
 12112  
 12113  	var rc int32
 12114  	var p uintptr = pFile
 12115  	pFile = pFile + uintptr(1)*32
 12116  	if op == SQLITE_FCNTL_PRAGMA {
 12117  		var azArg uintptr = pArg
 12118  
 12119  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4144) == 0 {
 12120  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*8))
 12121  			if zArg != uintptr(0) {
 12122  				if int32(*(*uint8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*uint8)(unsafe.Pointer(zArg))) <= '9' ||
 12123  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 12124  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 12125  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 12126  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 12127  				} else {
 12128  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = uint8(0)
 12129  				}
 12130  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12131  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 12132  				}
 12133  			}
 12134  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 12135  			return SQLITE_OK
 12136  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*8)) != uintptr(0) &&
 12137  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4181) == 0 {
 12138  			return SQLITE_OK
 12139  		}
 12140  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 12141  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = uint8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 12142  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12143  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 12144  		}
 12145  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 12146  		var ppFile uintptr = pArg
 12147  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 12148  		return SQLITE_OK
 12149  	}
 12150  	rc = (*struct {
 12151  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12152  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 12153  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 12154  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 12155  	}
 12156  	return rc
 12157  }
 12158  
 12159  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 12160  	pFile = pFile + uintptr(1)*32
 12161  	return (*struct {
 12162  		f func(*libc.TLS, uintptr) int32
 12163  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 12164  }
 12165  
 12166  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 12167  	pFile = pFile + uintptr(1)*32
 12168  	return (*struct {
 12169  		f func(*libc.TLS, uintptr) int32
 12170  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 12171  }
 12172  
 12173  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 12174  	pFile = pFile + uintptr(1)*32
 12175  	return (*struct {
 12176  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 12177  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 12178  }
 12179  
 12180  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 12181  	pFile = pFile + uintptr(1)*32
 12182  	return (*struct {
 12183  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 12184  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 12185  }
 12186  
 12187  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 12188  	pFile = pFile + uintptr(1)*32
 12189  	(*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)
 12190  }
 12191  
 12192  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 12193  	pFile = pFile + uintptr(1)*32
 12194  	return (*struct {
 12195  		f func(*libc.TLS, uintptr, int32) int32
 12196  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 12197  }
 12198  
 12199  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 12200  	var p uintptr = pFile
 12201  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 12202  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 12203  		return SQLITE_OK
 12204  	}
 12205  	pFile = pFile + uintptr(1)*32
 12206  	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 {
 12207  		return (*struct {
 12208  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 12209  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 12210  	}
 12211  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 12212  	return SQLITE_OK
 12213  }
 12214  
 12215  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 12216  	pFile = pFile + uintptr(1)*32
 12217  	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 {
 12218  		return (*struct {
 12219  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 12220  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 12221  	}
 12222  	return SQLITE_OK
 12223  }
 12224  
 12225  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 12226  	bp := tls.Alloc(8)
 12227  	defer tls.Free(8)
 12228  
 12229  	var p uintptr
 12230  	var pSubFile uintptr
 12231  	var pSubVfs uintptr
 12232  	var rc int32
 12233  
 12234  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 12235  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 12236  		goto __1
 12237  	}
 12238  	return (*struct {
 12239  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 12240  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 12241  __1:
 12242  	;
 12243  	p = pFile
 12244  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CksmFile{})))
 12245  	pSubFile = pFile + uintptr(1)*32
 12246  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 12247  	rc = (*struct {
 12248  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 12249  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 12250  	if !(rc != 0) {
 12251  		goto __2
 12252  	}
 12253  	goto cksm_open_done
 12254  __2:
 12255  	;
 12256  	if !(flags&SQLITE_OPEN_WAL != 0) {
 12257  		goto __3
 12258  	}
 12259  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 12260  	rc = (*struct {
 12261  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12262  	})(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)
 12263  
 12264  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 12265  
 12266  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 12267  	(*CksmFile)(unsafe.Pointer(p)).FisWal = uint8(1)
 12268  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 12269  	goto __4
 12270  __3:
 12271  	(*CksmFile)(unsafe.Pointer(p)).FisWal = uint8(0)
 12272  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = uint8(0)
 12273  __4:
 12274  	;
 12275  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 12276  cksm_open_done:
 12277  	if !(rc != 0) {
 12278  		goto __5
 12279  	}
 12280  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 12281  __5:
 12282  	;
 12283  	return rc
 12284  }
 12285  
 12286  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 12287  	return (*struct {
 12288  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 12289  	})(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)
 12290  }
 12291  
 12292  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 12293  	return (*struct {
 12294  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 12295  	})(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)
 12296  }
 12297  
 12298  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 12299  	return (*struct {
 12300  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 12301  	})(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)
 12302  }
 12303  
 12304  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 12305  	return (*struct {
 12306  		f func(*libc.TLS, uintptr, uintptr) uintptr
 12307  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 12308  }
 12309  
 12310  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 12311  	(*struct {
 12312  		f func(*libc.TLS, uintptr, int32, uintptr)
 12313  	})(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)
 12314  }
 12315  
 12316  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 12317  	return (*struct {
 12318  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 12319  	})(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)
 12320  }
 12321  
 12322  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 12323  	(*struct {
 12324  		f func(*libc.TLS, uintptr, uintptr)
 12325  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 12326  }
 12327  
 12328  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 12329  	return (*struct {
 12330  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12331  	})(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)
 12332  }
 12333  
 12334  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 12335  	return (*struct {
 12336  		f func(*libc.TLS, uintptr, int32) int32
 12337  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 12338  }
 12339  
 12340  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 12341  	return (*struct {
 12342  		f func(*libc.TLS, uintptr, uintptr) int32
 12343  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 12344  }
 12345  
 12346  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 12347  	return (*struct {
 12348  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12349  	})(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)
 12350  }
 12351  
 12352  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 12353  	bp := tls.Alloc(8)
 12354  	defer tls.Free(8)
 12355  
 12356  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 12357  	var rc int32
 12358  
 12359  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 12360  		rc = (*struct {
 12361  			f func(*libc.TLS, uintptr, uintptr) int32
 12362  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 12363  	} else {
 12364  		rc = (*struct {
 12365  			f func(*libc.TLS, uintptr, uintptr) int32
 12366  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 12367  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 12368  	}
 12369  	return rc
 12370  }
 12371  
 12372  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 12373  	return (*struct {
 12374  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 12375  	})(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)
 12376  }
 12377  
 12378  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 12379  	return (*struct {
 12380  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 12381  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 12382  }
 12383  
 12384  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 12385  	return (*struct {
 12386  		f func(*libc.TLS, uintptr, uintptr) uintptr
 12387  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 12388  }
 12389  
 12390  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12391  	var rc int32
 12392  	if db == uintptr(0) {
 12393  		return SQLITE_OK
 12394  	}
 12395  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 12396  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 12397  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 12398  			f func(*libc.TLS, uintptr, int32, uintptr)
 12399  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 12400  	return rc
 12401  }
 12402  
 12403  func cksmRegisterVfs(tls *libc.TLS) int32 {
 12404  	var rc int32 = SQLITE_OK
 12405  	var pOrig uintptr
 12406  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 12407  		return SQLITE_OK
 12408  	}
 12409  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 12410  	if pOrig == uintptr(0) {
 12411  		return SQLITE_ERROR
 12412  	}
 12413  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 12414  	cksm_vfs.FpAppData = pOrig
 12415  	cksm_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(CksmFile{})))
 12416  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 12417  	if rc == SQLITE_OK {
 12418  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12419  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12420  		}{cksmRegisterFunc})))
 12421  	}
 12422  	return rc
 12423  }
 12424  
 12425  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 12426  	_ = NotUsed
 12427  	return cksmRegisterVfs(tls)
 12428  }
 12429  
 12430  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 12431  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 12432  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 12433  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12434  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12435  		}{cksmRegisterFunc})))
 12436  	}
 12437  	return SQLITE_OK
 12438  }
 12439  
 12440  type closure_vtab1 = struct {
 12441  	Fbase          sqlite3_vtab
 12442  	FzDb           uintptr
 12443  	FzSelf         uintptr
 12444  	FzTableName    uintptr
 12445  	FzIdColumn     uintptr
 12446  	FzParentColumn uintptr
 12447  	Fdb            uintptr
 12448  	FnCursor       int32
 12449  	F__ccgo_pad1   [4]byte
 12450  }
 12451  
 12452  type closure_vtab = closure_vtab1
 12453  type closure_cursor1 = struct {
 12454  	Fbase          sqlite3_vtab_cursor
 12455  	FpVtab         uintptr
 12456  	FzTableName    uintptr
 12457  	FzIdColumn     uintptr
 12458  	FzParentColumn uintptr
 12459  	FpCurrent      uintptr
 12460  	FpClosure      uintptr
 12461  }
 12462  
 12463  type closure_cursor = closure_cursor1
 12464  type closure_queue1 = struct {
 12465  	FpFirst uintptr
 12466  	FpLast  uintptr
 12467  }
 12468  
 12469  type closure_queue = closure_queue1
 12470  type closure_avl1 = struct {
 12471  	Fid          sqlite3_int64
 12472  	FiGeneration int32
 12473  	F__ccgo_pad1 [4]byte
 12474  	FpList       uintptr
 12475  	FpBefore     uintptr
 12476  	FpAfter      uintptr
 12477  	FpUp         uintptr
 12478  	Fheight      int16
 12479  	Fimbalance   int16
 12480  	F__ccgo_pad2 [4]byte
 12481  }
 12482  
 12483  type closure_avl = closure_avl1
 12484  
 12485  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 12486  	var hBefore int16
 12487  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12488  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 12489  	} else {
 12490  		hBefore = int16(0)
 12491  	}
 12492  	var hAfter int16
 12493  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12494  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 12495  	} else {
 12496  		hAfter = int16(0)
 12497  	}
 12498  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 12499  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 12500  		if int32(hBefore) > int32(hAfter) {
 12501  			return int32(hBefore)
 12502  		}
 12503  		return int32(hAfter)
 12504  	}() + 1)
 12505  }
 12506  
 12507  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 12508  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 12509  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 12510  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12511  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 12512  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 12513  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 12514  	if pY != 0 {
 12515  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12516  	}
 12517  	closureAvlRecomputeHeight(tls, pP)
 12518  	closureAvlRecomputeHeight(tls, pB)
 12519  	return pB
 12520  }
 12521  
 12522  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 12523  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 12524  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 12525  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12526  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 12527  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 12528  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 12529  	if pY != 0 {
 12530  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12531  	}
 12532  	closureAvlRecomputeHeight(tls, pP)
 12533  	closureAvlRecomputeHeight(tls, pA)
 12534  	return pA
 12535  }
 12536  
 12537  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 12538  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12539  	if pUp == uintptr(0) {
 12540  		return pp
 12541  	}
 12542  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 12543  		return pUp + 32
 12544  	}
 12545  	return pUp + 24
 12546  }
 12547  
 12548  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 12549  	bp := tls.Alloc(8)
 12550  	defer tls.Free(8)
 12551  	*(*uintptr)(unsafe.Pointer(bp)) = p
 12552  
 12553  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 12554  	var pp uintptr
 12555  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 12556  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 12557  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 12558  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 12559  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 12560  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 12561  			}
 12562  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12563  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12564  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 12565  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 12566  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 12567  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 12568  			}
 12569  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12570  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12571  		}
 12572  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 12573  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 12574  	}
 12575  	return pTop
 12576  }
 12577  
 12578  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 12579  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 12580  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12581  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12582  		} else {
 12583  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12584  		}
 12585  	}
 12586  	return p
 12587  }
 12588  
 12589  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 12590  	if p != 0 {
 12591  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12592  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12593  		}
 12594  	}
 12595  	return p
 12596  }
 12597  
 12598  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 12599  	var pPrev uintptr = uintptr(0)
 12600  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 12601  		pPrev = p
 12602  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12603  	}
 12604  	if p != 0 && pPrev == uintptr(0) {
 12605  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 12606  	}
 12607  	return p
 12608  }
 12609  
 12610  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 12611  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 12612  	if p == uintptr(0) {
 12613  		p = pNew
 12614  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 12615  	} else {
 12616  		for p != 0 {
 12617  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12618  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12619  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12620  				} else {
 12621  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 12622  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12623  					break
 12624  				}
 12625  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 12626  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12627  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12628  				} else {
 12629  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 12630  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12631  					break
 12632  				}
 12633  			} else {
 12634  				return p
 12635  			}
 12636  		}
 12637  	}
 12638  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 12639  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 12640  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 12641  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 12642  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 12643  	return uintptr(0)
 12644  }
 12645  
 12646  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 12647  	if p != 0 {
 12648  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 12649  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 12650  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 12651  	}
 12652  }
 12653  
 12654  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 12655  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 12656  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 12657  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 12658  	} else {
 12659  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 12660  	}
 12661  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 12662  }
 12663  
 12664  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 12665  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 12666  	if p != 0 {
 12667  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 12668  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 12669  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 12670  		}
 12671  	}
 12672  	return p
 12673  }
 12674  
 12675  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 12676  	var nIn sqlite3_int64
 12677  	var zOut uintptr
 12678  
 12679  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 12680  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 12681  	if zOut != 0 {
 12682  		var q uint8 = *(*uint8)(unsafe.Pointer(zIn))
 12683  
 12684  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 12685  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 12686  		} else {
 12687  			var iOut int32 = 0
 12688  			var iIn int32
 12689  
 12690  			if int32(q) == '[' {
 12691  				q = uint8(']')
 12692  			}
 12693  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 12694  				if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 12695  					iIn++
 12696  				}
 12697  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
 12698  			}
 12699  		}
 12700  
 12701  	}
 12702  	return zOut
 12703  }
 12704  
 12705  func closureFree(tls *libc.TLS, p uintptr) {
 12706  	if p != 0 {
 12707  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 12708  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 12709  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 12710  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 12711  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 12712  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12713  		sqlite3.Xsqlite3_free(tls, p)
 12714  	}
 12715  }
 12716  
 12717  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12718  	var p uintptr = pVtab
 12719  
 12720  	closureFree(tls, p)
 12721  	return SQLITE_OK
 12722  }
 12723  
 12724  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 12725  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 12726  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 12727  	var i int32
 12728  	if nStr < nKey+1 {
 12729  		return uintptr(0)
 12730  	}
 12731  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 12732  		return uintptr(0)
 12733  	}
 12734  	for i = nKey; int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))))*2)))&int32(_ISspace) != 0; i++ {
 12735  	}
 12736  	if int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 12737  		return uintptr(0)
 12738  	}
 12739  	i++
 12740  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))))*2)))&int32(_ISspace) != 0 {
 12741  		i++
 12742  	}
 12743  	return zStr + uintptr(i)
 12744  }
 12745  
 12746  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12747  	bp := tls.Alloc(24)
 12748  	defer tls.Free(24)
 12749  
 12750  	var rc int32
 12751  	var pNew uintptr
 12752  	var zDb uintptr
 12753  	var zVal uintptr
 12754  	var i int32
 12755  	rc = SQLITE_OK
 12756  	pNew = uintptr(0)
 12757  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 12758  
 12759  	_ = pAux
 12760  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12761  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 12762  	if !(pNew == uintptr(0)) {
 12763  		goto __1
 12764  	}
 12765  	return SQLITE_NOMEM
 12766  __1:
 12767  	;
 12768  	rc = SQLITE_NOMEM
 12769  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12770  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 12771  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 12772  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 12773  		goto __2
 12774  	}
 12775  	goto closureConnectError
 12776  __2:
 12777  	;
 12778  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 12779  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 12780  		goto __3
 12781  	}
 12782  	goto closureConnectError
 12783  __3:
 12784  	;
 12785  	i = 3
 12786  __4:
 12787  	if !(i < argc) {
 12788  		goto __6
 12789  	}
 12790  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12791  	if !(zVal != 0) {
 12792  		goto __7
 12793  	}
 12794  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 12795  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 12796  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 12797  		goto __8
 12798  	}
 12799  	goto closureConnectError
 12800  __8:
 12801  	;
 12802  	goto __5
 12803  __7:
 12804  	;
 12805  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12806  	if !(zVal != 0) {
 12807  		goto __9
 12808  	}
 12809  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 12810  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 12811  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 12812  		goto __10
 12813  	}
 12814  	goto closureConnectError
 12815  __10:
 12816  	;
 12817  	goto __5
 12818  __9:
 12819  	;
 12820  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12821  	if !(zVal != 0) {
 12822  		goto __11
 12823  	}
 12824  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 12825  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 12826  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 12827  		goto __12
 12828  	}
 12829  	goto closureConnectError
 12830  __12:
 12831  	;
 12832  	goto __5
 12833  __11:
 12834  	;
 12835  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 12836  	closureFree(tls, pNew)
 12837  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12838  	return SQLITE_ERROR
 12839  	goto __5
 12840  __5:
 12841  	i++
 12842  	goto __4
 12843  	goto __6
 12844  __6:
 12845  	;
 12846  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 12847  		ts+4247)
 12848  	if !(rc != SQLITE_OK) {
 12849  		goto __13
 12850  	}
 12851  	closureFree(tls, pNew)
 12852  __13:
 12853  	;
 12854  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 12855  	return rc
 12856  
 12857  closureConnectError:
 12858  	closureFree(tls, pNew)
 12859  	return rc
 12860  }
 12861  
 12862  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 12863  	var p uintptr = pVTab
 12864  	var pCur uintptr
 12865  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 12866  	if pCur == uintptr(0) {
 12867  		return SQLITE_NOMEM
 12868  	}
 12869  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(closure_cursor{})))
 12870  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 12871  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 12872  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 12873  	return SQLITE_OK
 12874  }
 12875  
 12876  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 12877  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 12878  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 12879  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 12880  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 12881  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 12882  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 12883  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 12884  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 12885  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 12886  }
 12887  
 12888  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 12889  	var pCur uintptr = cur
 12890  	closureClearCursor(tls, pCur)
 12891  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 12892  	sqlite3.Xsqlite3_free(tls, pCur)
 12893  	return SQLITE_OK
 12894  }
 12895  
 12896  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 12897  	var pCur uintptr = cur
 12898  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 12899  	return SQLITE_OK
 12900  }
 12901  
 12902  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 12903  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 12904  	if pNew == uintptr(0) {
 12905  		return SQLITE_NOMEM
 12906  	}
 12907  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_avl{})))
 12908  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 12909  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 12910  	closureAvlInsert(tls, pCur+48, pNew)
 12911  	queuePush(tls, pQueue, pNew)
 12912  	return SQLITE_OK
 12913  }
 12914  
 12915  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 12916  	bp := tls.Alloc(96)
 12917  	defer tls.Free(96)
 12918  
 12919  	var pCur uintptr = pVtabCursor
 12920  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 12921  	var iRoot sqlite3_int64
 12922  	var mxGen int32 = 999999999
 12923  	var zSql uintptr
 12924  
 12925  	var pAvl uintptr
 12926  	var rc int32 = SQLITE_OK
 12927  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 12928  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 12929  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 12930  
 12931  	_ = idxStr
 12932  	_ = argc
 12933  	closureClearCursor(tls, pCur)
 12934  	libc.Xmemset(tls, bp+72, 0, uint64(unsafe.Sizeof(closure_queue{})))
 12935  	if idxNum&1 == 0 {
 12936  		return SQLITE_OK
 12937  	}
 12938  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12939  	if idxNum&0x000f0 != 0 {
 12940  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*8)))
 12941  		if idxNum&0x00002 != 0 {
 12942  			mxGen--
 12943  		}
 12944  	}
 12945  	if idxNum&0x00f00 != 0 {
 12946  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*8)))
 12947  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 12948  	}
 12949  	if idxNum&0x0f000 != 0 {
 12950  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*8)))
 12951  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 12952  	}
 12953  	if idxNum&0x0f0000 != 0 {
 12954  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*8)))
 12955  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 12956  	}
 12957  
 12958  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 12959  		ts+4337,
 12960  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 12961  	if zSql == uintptr(0) {
 12962  		return SQLITE_NOMEM
 12963  	} else {
 12964  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+88, uintptr(0))
 12965  		sqlite3.Xsqlite3_free(tls, zSql)
 12966  		if rc != 0 {
 12967  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 12968  			(*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)))
 12969  			return rc
 12970  		}
 12971  	}
 12972  	if rc == SQLITE_OK {
 12973  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 12974  	}
 12975  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 12976  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 12977  			continue
 12978  		}
 12979  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 12980  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 88))) == SQLITE_ROW {
 12981  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0) == SQLITE_INTEGER {
 12982  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0)
 12983  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 12984  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 12985  				}
 12986  			}
 12987  		}
 12988  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12989  	}
 12990  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12991  	if rc == SQLITE_OK {
 12992  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 12993  	}
 12994  
 12995  	return rc
 12996  }
 12997  
 12998  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 12999  	var pCur uintptr = cur
 13000  	switch i {
 13001  	case CLOSURE_COL_ID:
 13002  		{
 13003  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 13004  			break
 13005  
 13006  		}
 13007  	case CLOSURE_COL_DEPTH:
 13008  		{
 13009  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 13010  			break
 13011  
 13012  		}
 13013  	case CLOSURE_COL_ROOT:
 13014  		{
 13015  			sqlite3.Xsqlite3_result_null(tls, ctx)
 13016  			break
 13017  
 13018  		}
 13019  	case CLOSURE_COL_TABLENAME:
 13020  		{
 13021  			sqlite3.Xsqlite3_result_text(tls, ctx,
 13022  				func() uintptr {
 13023  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 13024  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 13025  					}
 13026  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 13027  				}(),
 13028  				-1, libc.UintptrFromInt32(-1))
 13029  			break
 13030  
 13031  		}
 13032  	case CLOSURE_COL_IDCOLUMN:
 13033  		{
 13034  			sqlite3.Xsqlite3_result_text(tls, ctx,
 13035  				func() uintptr {
 13036  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 13037  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 13038  					}
 13039  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 13040  				}(),
 13041  				-1, libc.UintptrFromInt32(-1))
 13042  			break
 13043  
 13044  		}
 13045  	case CLOSURE_COL_PARENTCOLUMN:
 13046  		{
 13047  			sqlite3.Xsqlite3_result_text(tls, ctx,
 13048  				func() uintptr {
 13049  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 13050  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 13051  					}
 13052  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 13053  				}(),
 13054  				-1, libc.UintptrFromInt32(-1))
 13055  			break
 13056  
 13057  		}
 13058  	}
 13059  	return SQLITE_OK
 13060  }
 13061  
 13062  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13063  	var pCur uintptr = cur
 13064  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 13065  	return SQLITE_OK
 13066  }
 13067  
 13068  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 13069  	var pCur uintptr = cur
 13070  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 13071  }
 13072  
 13073  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 13074  	var iPlan int32 = 0
 13075  	var i int32
 13076  	var idx int32 = 1
 13077  	var pConstraint uintptr
 13078  	var pVtab uintptr = pTab
 13079  	var rCost float64 = 10000000.0
 13080  
 13081  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 13082  	i = 0
 13083  __1:
 13084  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13085  		goto __3
 13086  	}
 13087  	{
 13088  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 13089  			goto __2
 13090  		}
 13091  		if iPlan&1 == 0 &&
 13092  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 13093  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13094  			iPlan = iPlan | 1
 13095  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 13096  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13097  			rCost = rCost / 100.0
 13098  		}
 13099  		if iPlan&0x0000f0 == 0 &&
 13100  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 13101  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 13102  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 13103  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 13104  			iPlan = iPlan | idx<<4
 13105  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13106  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 13107  				iPlan = iPlan | 0x000002
 13108  			}
 13109  			rCost = rCost / 5.0
 13110  		}
 13111  		if iPlan&0x000f00 == 0 &&
 13112  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 13113  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13114  			iPlan = iPlan | idx<<8
 13115  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13116  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13117  			rCost = rCost / 5.0
 13118  		}
 13119  		if iPlan&0x00f000 == 0 &&
 13120  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 13121  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13122  			iPlan = iPlan | idx<<12
 13123  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13124  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13125  		}
 13126  		if iPlan&0x0f0000 == 0 &&
 13127  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 13128  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13129  			iPlan = iPlan | idx<<16
 13130  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13131  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13132  		}
 13133  
 13134  	}
 13135  	goto __2
 13136  __2:
 13137  	i++
 13138  	pConstraint += 12
 13139  	goto __1
 13140  	goto __3
 13141  __3:
 13142  	;
 13143  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 13144  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 13145  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 13146  		iPlan = 0
 13147  	}
 13148  	if iPlan&1 == 0 {
 13149  		rCost = rCost * 1e30
 13150  		i = 0
 13151  	__4:
 13152  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13153  			goto __6
 13154  		}
 13155  		{
 13156  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 13157  
 13158  		}
 13159  		goto __5
 13160  	__5:
 13161  		i++
 13162  		pConstraint += 12
 13163  		goto __4
 13164  		goto __6
 13165  	__6:
 13166  		;
 13167  		iPlan = 0
 13168  	}
 13169  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 13170  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 13171  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 13172  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 13173  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 13174  	}
 13175  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 13176  
 13177  	return SQLITE_OK
 13178  }
 13179  
 13180  var closureModule = sqlite3_module{
 13181  	FxCreate:     0,
 13182  	FxConnect:    0,
 13183  	FxBestIndex:  0,
 13184  	FxDisconnect: 0,
 13185  	FxDestroy:    0,
 13186  	FxOpen:       0,
 13187  	FxClose:      0,
 13188  	FxFilter:     0,
 13189  	FxNext:       0,
 13190  	FxEof:        0,
 13191  	FxColumn:     0,
 13192  	FxRowid:      0,
 13193  }
 13194  
 13195  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13196  	var rc int32 = SQLITE_OK
 13197  	_ = pApi
 13198  
 13199  	_ = pzErrMsg
 13200  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 13201  	return rc
 13202  }
 13203  
 13204  type CsvReader1 = struct {
 13205  	Fin          uintptr
 13206  	Fz           uintptr
 13207  	Fn           int32
 13208  	FnAlloc      int32
 13209  	FnLine       int32
 13210  	FbNotFirst   int32
 13211  	FcTerm       int32
 13212  	F__ccgo_pad1 [4]byte
 13213  	FiIn         size_t
 13214  	FnIn         size_t
 13215  	FzIn         uintptr
 13216  	FzErr        [200]uint8
 13217  }
 13218  
 13219  type CsvReader = CsvReader1
 13220  
 13221  func csv_reader_init(tls *libc.TLS, p uintptr) {
 13222  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 13223  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 13224  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13225  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 13226  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 13227  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 13228  	(*CsvReader)(unsafe.Pointer(p)).FnIn = uint64(0)
 13229  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 13230  	*(*uint8)(unsafe.Pointer(p + 64)) = uint8(0)
 13231  }
 13232  
 13233  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 13234  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 13235  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 13236  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 13237  	}
 13238  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 13239  	csv_reader_init(tls, p)
 13240  }
 13241  
 13242  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 13243  	var ap va_list
 13244  	_ = ap
 13245  	ap = va
 13246  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+64, zFormat, ap)
 13247  	_ = ap
 13248  }
 13249  
 13250  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 13251  	bp := tls.Alloc(8)
 13252  	defer tls.Free(8)
 13253  
 13254  	if zFilename != 0 {
 13255  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 13256  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 13257  			csv_errmsg(tls, p, ts+2069, 0)
 13258  			return 1
 13259  		}
 13260  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 13261  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 13262  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 13263  			csv_reader_reset(tls, p)
 13264  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 13265  			return 1
 13266  		}
 13267  	} else {
 13268  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 13269  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 13270  	}
 13271  	return 0
 13272  }
 13273  
 13274  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 13275  	var got size_t
 13276  
 13277  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint64(1), uint64(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 13278  	if got == uint64(0) {
 13279  		return -1
 13280  	}
 13281  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 13282  	(*CsvReader)(unsafe.Pointer(p)).FiIn = uint64(1)
 13283  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 13284  }
 13285  
 13286  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 13287  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 13288  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 13289  			return csv_getc_refill(tls, p)
 13290  		}
 13291  		return -1
 13292  	}
 13293  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint64(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 13294  }
 13295  
 13296  func csv_resize_and_append(tls *libc.TLS, p uintptr, c uint8) int32 {
 13297  	var zNew uintptr
 13298  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 13299  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 13300  	if zNew != 0 {
 13301  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 13302  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 13303  		*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 13304  		return 0
 13305  	} else {
 13306  		csv_errmsg(tls, p, ts+2069, 0)
 13307  		return 1
 13308  	}
 13309  	return int32(0)
 13310  }
 13311  
 13312  func csv_append(tls *libc.TLS, p uintptr, c uint8) int32 {
 13313  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 13314  		return csv_resize_and_append(tls, p, c)
 13315  	}
 13316  	*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 13317  	return 0
 13318  }
 13319  
 13320  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 13321  	bp := tls.Alloc(32)
 13322  	defer tls.Free(32)
 13323  
 13324  	var c int32
 13325  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13326  	c = csv_getc(tls, p)
 13327  	if c == -1 {
 13328  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 13329  		return uintptr(0)
 13330  	}
 13331  	if c == '"' {
 13332  		var pc int32
 13333  		var ppc int32
 13334  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 13335  		pc = libc.AssignInt32(&ppc, 0)
 13336  		for 1 != 0 {
 13337  			c = csv_getc(tls, p)
 13338  			if c <= '"' || pc == '"' {
 13339  				if c == '\n' {
 13340  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 13341  				}
 13342  				if c == '"' {
 13343  					if pc == '"' {
 13344  						pc = 0
 13345  						continue
 13346  					}
 13347  				}
 13348  				if c == ',' && pc == '"' ||
 13349  					c == '\n' && pc == '"' ||
 13350  					c == '\n' && pc == '\r' && ppc == '"' ||
 13351  					c == -1 && pc == '"' {
 13352  					for __ccgo := true; __ccgo; __ccgo = int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 13353  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 13354  					}
 13355  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(uint8(c))
 13356  					break
 13357  				}
 13358  				if pc == '"' && c != '\r' {
 13359  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 13360  					break
 13361  				}
 13362  				if c == -1 {
 13363  					csv_errmsg(tls, p, ts+4466,
 13364  						libc.VaList(bp+16, startLine, '"'))
 13365  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(uint8(c))
 13366  					break
 13367  				}
 13368  			}
 13369  			if csv_append(tls, p, uint8(c)) != 0 {
 13370  				return uintptr(0)
 13371  			}
 13372  			ppc = pc
 13373  			pc = c
 13374  		}
 13375  	} else {
 13376  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 13377  			csv_append(tls, p, uint8(c))
 13378  			c = csv_getc(tls, p)
 13379  			if c&0xff == 0xbb {
 13380  				csv_append(tls, p, uint8(c))
 13381  				c = csv_getc(tls, p)
 13382  				if c&0xff == 0xbf {
 13383  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 13384  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13385  					return csv_read_one_field(tls, p)
 13386  				}
 13387  			}
 13388  		}
 13389  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 13390  			if csv_append(tls, p, uint8(c)) != 0 {
 13391  				return uintptr(0)
 13392  			}
 13393  			c = csv_getc(tls, p)
 13394  		}
 13395  		if c == '\n' {
 13396  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 13397  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 13398  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 13399  			}
 13400  		}
 13401  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(uint8(c))
 13402  	}
 13403  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 13404  		*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = uint8(0)
 13405  	}
 13406  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 13407  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 13408  }
 13409  
 13410  type CsvTable1 = struct {
 13411  	Fbase      sqlite3_vtab
 13412  	FzFilename uintptr
 13413  	FzData     uintptr
 13414  	FiStart    int64
 13415  	FnCol      int32
 13416  	FtstFlags  uint32
 13417  }
 13418  
 13419  type CsvTable = CsvTable1
 13420  
 13421  type CsvCursor1 = struct {
 13422  	Fbase   sqlite3_vtab_cursor
 13423  	Frdr    CsvReader
 13424  	FazVal  uintptr
 13425  	FaLen   uintptr
 13426  	FiRowid sqlite3_int64
 13427  }
 13428  
 13429  type CsvCursor = CsvCursor1
 13430  
 13431  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 13432  	bp := tls.Alloc(8)
 13433  	defer tls.Free(8)
 13434  
 13435  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 13436  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+64))
 13437  }
 13438  
 13439  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13440  	var p uintptr = pVtab
 13441  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 13442  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 13443  	sqlite3.Xsqlite3_free(tls, p)
 13444  	return SQLITE_OK
 13445  }
 13446  
 13447  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 13448  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(z))))*2)))&int32(_ISspace) != 0 {
 13449  		z++
 13450  	}
 13451  	return z
 13452  }
 13453  
 13454  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 13455  	var n size_t = libc.Xstrlen(tls, z)
 13456  	for n > uint64(0) && int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(z + uintptr(n)))))*2)))&int32(_ISspace) != 0 {
 13457  		n--
 13458  	}
 13459  	*(*uint8)(unsafe.Pointer(z + uintptr(n))) = uint8(0)
 13460  }
 13461  
 13462  func csv_dequote(tls *libc.TLS, z uintptr) {
 13463  	var j int32
 13464  	var cQuote uint8 = *(*uint8)(unsafe.Pointer(z))
 13465  	var i size_t
 13466  	var n size_t
 13467  
 13468  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 13469  		return
 13470  	}
 13471  	n = libc.Xstrlen(tls, z)
 13472  	if n < uint64(2) || int32(*(*uint8)(unsafe.Pointer(z + uintptr(n-uint64(1))))) != int32(*(*uint8)(unsafe.Pointer(z))) {
 13473  		return
 13474  	}
 13475  	i = uint64(1)
 13476  	j = 0
 13477  	for ; i < n-uint64(1); i++ {
 13478  		if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+uint64(1))))) == int32(cQuote) {
 13479  			i++
 13480  		}
 13481  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(i)))
 13482  	}
 13483  	*(*uint8)(unsafe.Pointer(z + uintptr(j))) = uint8(0)
 13484  }
 13485  
 13486  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 13487  	z = csv_skip_whitespace(tls, z)
 13488  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 13489  		return uintptr(0)
 13490  	}
 13491  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13492  	if int32(*(*uint8)(unsafe.Pointer(z))) != '=' {
 13493  		return uintptr(0)
 13494  	}
 13495  	return csv_skip_whitespace(tls, z+uintptr(1))
 13496  }
 13497  
 13498  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 13499  	bp := tls.Alloc(16)
 13500  	defer tls.Free(16)
 13501  
 13502  	var zValue uintptr
 13503  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 13504  	if zValue == uintptr(0) {
 13505  		return 0
 13506  	}
 13507  	*(*uint8)(unsafe.Pointer(p + 64)) = uint8(0)
 13508  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 13509  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 13510  		return 1
 13511  	}
 13512  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 13513  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 13514  		csv_errmsg(tls, p, ts+2069, 0)
 13515  		return 1
 13516  	}
 13517  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13518  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13519  	return 1
 13520  }
 13521  
 13522  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 13523  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 13524  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 13525  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 13526  		int32(*(*uint8)(unsafe.Pointer(z))) == '1' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == 0 {
 13527  		return 1
 13528  	}
 13529  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 13530  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 13531  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 13532  		int32(*(*uint8)(unsafe.Pointer(z))) == '0' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == 0 {
 13533  		return 0
 13534  	}
 13535  	return -1
 13536  }
 13537  
 13538  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 13539  	var b int32
 13540  	z = csv_skip_whitespace(tls, z)
 13541  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 13542  		return 0
 13543  	}
 13544  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13545  	if int32(*(*uint8)(unsafe.Pointer(z))) == 0 {
 13546  		*(*int32)(unsafe.Pointer(pValue)) = 1
 13547  		return 1
 13548  	}
 13549  	if int32(*(*uint8)(unsafe.Pointer(z))) != '=' {
 13550  		return 0
 13551  	}
 13552  	z = csv_skip_whitespace(tls, z+uintptr(1))
 13553  	b = csv_boolean(tls, z)
 13554  	if b >= 0 {
 13555  		*(*int32)(unsafe.Pointer(pValue)) = b
 13556  		return 1
 13557  	}
 13558  	return 0
 13559  }
 13560  
 13561  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13562  	bp := tls.Alloc(372)
 13563  	defer tls.Free(372)
 13564  
 13565  	var pNew uintptr
 13566  	var bHeader int32
 13567  	var rc int32
 13568  	var i int32
 13569  	var j int32
 13570  	var tstFlags int32
 13571  
 13572  	var nCol int32
 13573  
 13574  	var z uintptr
 13575  	var zValue uintptr
 13576  	var z1 uintptr
 13577  	var pStr uintptr
 13578  	var zSep uintptr
 13579  	var iCol int32
 13580  	pNew = uintptr(0)
 13581  	bHeader = -1
 13582  	rc = SQLITE_OK
 13583  	tstFlags = 0
 13584  	nCol = -99
 13585  
 13586  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(CsvReader{})))
 13587  	libc.Xmemset(tls, bp+344, 0, uint64(unsafe.Sizeof([3]uintptr{})))
 13588  	i = 3
 13589  __1:
 13590  	if !(i < argc) {
 13591  		goto __3
 13592  	}
 13593  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 13594  	j = 0
 13595  __4:
 13596  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13597  		goto __6
 13598  	}
 13599  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+344+uintptr(j)*8) != 0) {
 13600  		goto __7
 13601  	}
 13602  	goto __6
 13603  __7:
 13604  	;
 13605  	goto __5
 13606  __5:
 13607  	j++
 13608  	goto __4
 13609  	goto __6
 13610  __6:
 13611  	;
 13612  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13613  		goto __8
 13614  	}
 13615  	if !(*(*uint8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13616  		goto __10
 13617  	}
 13618  	goto csvtab_connect_error
 13619  __10:
 13620  	;
 13621  	goto __9
 13622  __8:
 13623  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+368) != 0) {
 13624  		goto __11
 13625  	}
 13626  	if !(bHeader >= 0) {
 13627  		goto __13
 13628  	}
 13629  	csv_errmsg(tls, bp+80, ts+4559, 0)
 13630  	goto csvtab_connect_error
 13631  __13:
 13632  	;
 13633  	bHeader = *(*int32)(unsafe.Pointer(bp + 368))
 13634  	goto __12
 13635  __11:
 13636  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 13637  		goto __14
 13638  	}
 13639  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 13640  	goto __15
 13641  __14:
 13642  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 13643  		goto __16
 13644  	}
 13645  	if !(nCol > 0) {
 13646  		goto __18
 13647  	}
 13648  	csv_errmsg(tls, bp+80, ts+4610, 0)
 13649  	goto csvtab_connect_error
 13650  __18:
 13651  	;
 13652  	nCol = libc.Xatoi(tls, zValue)
 13653  	if !(nCol <= 0) {
 13654  		goto __19
 13655  	}
 13656  	csv_errmsg(tls, bp+80, ts+4644, 0)
 13657  	goto csvtab_connect_error
 13658  __19:
 13659  	;
 13660  	goto __17
 13661  __16:
 13662  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 13663  	goto csvtab_connect_error
 13664  __17:
 13665  	;
 13666  __15:
 13667  	;
 13668  __12:
 13669  	;
 13670  __9:
 13671  	;
 13672  	goto __2
 13673  __2:
 13674  	i++
 13675  	goto __1
 13676  	goto __3
 13677  __3:
 13678  	;
 13679  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) == uintptr(0))) {
 13680  		goto __20
 13681  	}
 13682  	csv_errmsg(tls, bp+80, ts+4695, 0)
 13683  	goto csvtab_connect_error
 13684  __20:
 13685  	;
 13686  	if !((nCol <= 0 || bHeader == 1) &&
 13687  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 344)), *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))) != 0) {
 13688  		goto __21
 13689  	}
 13690  	goto csvtab_connect_error
 13691  __21:
 13692  	;
 13693  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 13694  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13695  	if !(pNew == uintptr(0)) {
 13696  		goto __22
 13697  	}
 13698  	goto csvtab_connect_oom
 13699  __22:
 13700  	;
 13701  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(CsvTable{})))
 13702  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13703  		goto __23
 13704  	}
 13705  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 13706  	zSep = ts + 584
 13707  	iCol = 0
 13708  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 13709  	if !(nCol < 0 && bHeader < 1) {
 13710  		goto __25
 13711  	}
 13712  	nCol = 0
 13713  __26:
 13714  	csv_read_one_field(tls, bp+80)
 13715  	nCol++
 13716  	goto __27
 13717  __27:
 13718  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13719  		goto __26
 13720  	}
 13721  	goto __28
 13722  __28:
 13723  	;
 13724  __25:
 13725  	;
 13726  	if !(nCol > 0 && bHeader < 1) {
 13727  		goto __29
 13728  	}
 13729  	iCol = 0
 13730  __31:
 13731  	if !(iCol < nCol) {
 13732  		goto __33
 13733  	}
 13734  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 13735  	zSep = ts + 4758
 13736  	goto __32
 13737  __32:
 13738  	iCol++
 13739  	goto __31
 13740  	goto __33
 13741  __33:
 13742  	;
 13743  	goto __30
 13744  __29:
 13745  __34:
 13746  	z1 = csv_read_one_field(tls, bp+80)
 13747  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 13748  		goto __37
 13749  	}
 13750  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 13751  	zSep = ts + 4758
 13752  	iCol++
 13753  __37:
 13754  	;
 13755  	goto __35
 13756  __35:
 13757  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13758  		goto __34
 13759  	}
 13760  	goto __36
 13761  __36:
 13762  	;
 13763  	if !(nCol < 0) {
 13764  		goto __38
 13765  	}
 13766  	nCol = iCol
 13767  	goto __39
 13768  __38:
 13769  __40:
 13770  	if !(iCol < nCol) {
 13771  		goto __41
 13772  	}
 13773  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 13774  	zSep = ts + 4758
 13775  	goto __40
 13776  __41:
 13777  	;
 13778  __39:
 13779  	;
 13780  __30:
 13781  	;
 13782  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13783  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 13784  	*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 13785  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13786  		goto __42
 13787  	}
 13788  	goto csvtab_connect_oom
 13789  __42:
 13790  	;
 13791  	goto __24
 13792  __23:
 13793  	if !(nCol < 0) {
 13794  		goto __43
 13795  	}
 13796  __45:
 13797  	csv_read_one_field(tls, bp+80)
 13798  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 13799  	goto __46
 13800  __46:
 13801  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13802  		goto __45
 13803  	}
 13804  	goto __47
 13805  __47:
 13806  	;
 13807  	goto __44
 13808  __43:
 13809  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13810  __44:
 13811  	;
 13812  __24:
 13813  	;
 13814  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 344))
 13815  	*(*uintptr)(unsafe.Pointer(bp + 344)) = uintptr(0)
 13816  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))
 13817  	*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) = uintptr(0)
 13818  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 13819  	if !(bHeader != 1) {
 13820  		goto __48
 13821  	}
 13822  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(0)
 13823  	goto __49
 13824  __48:
 13825  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 13826  		goto __50
 13827  	}
 13828  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn))
 13829  	goto __51
 13830  __50:
 13831  	(*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))
 13832  __51:
 13833  	;
 13834  __49:
 13835  	;
 13836  	csv_reader_reset(tls, bp+80)
 13837  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)))
 13838  	if !(rc != 0) {
 13839  		goto __52
 13840  	}
 13841  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)), sqlite3.Xsqlite3_errmsg(tls, db)))
 13842  	goto csvtab_connect_error
 13843  __52:
 13844  	;
 13845  	i = 0
 13846  __53:
 13847  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13848  		goto __55
 13849  	}
 13850  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13851  	goto __54
 13852  __54:
 13853  	i++
 13854  	goto __53
 13855  	goto __55
 13856  __55:
 13857  	;
 13858  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 13859  	return SQLITE_OK
 13860  
 13861  csvtab_connect_oom:
 13862  	rc = SQLITE_NOMEM
 13863  	csv_errmsg(tls, bp+80, ts+2069, 0)
 13864  
 13865  csvtab_connect_error:
 13866  	if !(pNew != 0) {
 13867  		goto __56
 13868  	}
 13869  	csvtabDisconnect(tls, pNew)
 13870  __56:
 13871  	;
 13872  	i = 0
 13873  __57:
 13874  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13875  		goto __59
 13876  	}
 13877  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13878  	goto __58
 13879  __58:
 13880  	i++
 13881  	goto __57
 13882  	goto __59
 13883  __59:
 13884  	;
 13885  	if !(*(*uint8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13886  		goto __60
 13887  	}
 13888  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 13889  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+64))
 13890  __60:
 13891  	;
 13892  	csv_reader_reset(tls, bp+80)
 13893  	if !(rc == SQLITE_OK) {
 13894  		goto __61
 13895  	}
 13896  	rc = SQLITE_ERROR
 13897  __61:
 13898  	;
 13899  	return rc
 13900  }
 13901  
 13902  var azParam = [3]uintptr{
 13903  	ts + 4794, ts + 4803, ts + 4808,
 13904  }
 13905  
 13906  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 13907  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 13908  	var i int32
 13909  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 13910  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13911  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13912  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13913  	}
 13914  }
 13915  
 13916  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13917  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 13918  }
 13919  
 13920  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 13921  	var pCur uintptr = cur
 13922  	csvtabCursorRowReset(tls, pCur)
 13923  	csv_reader_reset(tls, pCur+8)
 13924  	sqlite3.Xsqlite3_free(tls, cur)
 13925  	return SQLITE_OK
 13926  }
 13927  
 13928  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 13929  	var pTab uintptr = p
 13930  	var pCur uintptr
 13931  	var nByte size_t
 13932  	nByte = uint64(unsafe.Sizeof(CsvCursor{})) + (uint64(unsafe.Sizeof(uintptr(0)))+uint64(unsafe.Sizeof(int32(0))))*uint64((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 13933  	pCur = sqlite3.Xsqlite3_malloc64(tls, nByte)
 13934  	if pCur == uintptr(0) {
 13935  		return SQLITE_NOMEM
 13936  	}
 13937  	libc.Xmemset(tls, pCur, 0, nByte)
 13938  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*296
 13939  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*8
 13940  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13941  	if csv_reader_open(tls, pCur+8, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 13942  		csv_xfer_error(tls, pTab, pCur+8)
 13943  		return SQLITE_ERROR
 13944  	}
 13945  	return SQLITE_OK
 13946  }
 13947  
 13948  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 13949  	var pCur uintptr = cur
 13950  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13951  	var i int32 = 0
 13952  	var z uintptr
 13953  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 13954  		z = csv_read_one_field(tls, pCur+8)
 13955  		if z == uintptr(0) {
 13956  			break
 13957  		}
 13958  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13959  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 13960  				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))
 13961  				if zNew == uintptr(0) {
 13962  					csv_errmsg(tls, pCur+8, ts+2069, 0)
 13963  					csv_xfer_error(tls, pTab, pCur+8)
 13964  					break
 13965  				}
 13966  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = zNew
 13967  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 13968  			}
 13969  			libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), z, uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13970  			i++
 13971  		}
 13972  	}
 13973  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13974  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 13975  	} else {
 13976  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 13977  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13978  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13979  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13980  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13981  			i++
 13982  		}
 13983  	}
 13984  	return SQLITE_OK
 13985  }
 13986  
 13987  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13988  	var pCur uintptr = cur
 13989  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13990  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) != uintptr(0) {
 13991  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), -1, libc.UintptrFromInt32(-1))
 13992  	}
 13993  	return SQLITE_OK
 13994  }
 13995  
 13996  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13997  	var pCur uintptr = cur
 13998  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 13999  	return SQLITE_OK
 14000  }
 14001  
 14002  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 14003  	var pCur uintptr = cur
 14004  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 14005  }
 14006  
 14007  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 14008  	var pCur uintptr = pVtabCursor
 14009  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 14010  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 14011  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 14012  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 14013  	} else {
 14014  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 14015  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = uint64(0)
 14016  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = uint64(0)
 14017  	}
 14018  	return csvtabNext(tls, pVtabCursor)
 14019  }
 14020  
 14021  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 14022  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 14023  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 14024  		var i int32
 14025  		var nConst int32 = 0
 14026  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 14027  			var op uint8
 14028  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 14029  				continue
 14030  			}
 14031  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 14032  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 14033  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 14034  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 14035  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 14036  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 14037  				nConst++
 14038  			}
 14039  		}
 14040  	}
 14041  	return SQLITE_OK
 14042  }
 14043  
 14044  var CsvModule = sqlite3_module{
 14045  	FxCreate:     0,
 14046  	FxConnect:    0,
 14047  	FxBestIndex:  0,
 14048  	FxDisconnect: 0,
 14049  	FxDestroy:    0,
 14050  	FxOpen:       0,
 14051  	FxClose:      0,
 14052  	FxFilter:     0,
 14053  	FxNext:       0,
 14054  	FxEof:        0,
 14055  	FxColumn:     0,
 14056  	FxRowid:      0,
 14057  }
 14058  
 14059  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 14060  	return SQLITE_READONLY
 14061  }
 14062  
 14063  var CsvModuleFauxWrite = sqlite3_module{
 14064  	FxCreate:     0,
 14065  	FxConnect:    0,
 14066  	FxBestIndex:  0,
 14067  	FxDisconnect: 0,
 14068  	FxDestroy:    0,
 14069  	FxOpen:       0,
 14070  	FxClose:      0,
 14071  	FxFilter:     0,
 14072  	FxNext:       0,
 14073  	FxEof:        0,
 14074  	FxColumn:     0,
 14075  	FxRowid:      0,
 14076  	FxUpdate:     0,
 14077  }
 14078  
 14079  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14080  	var rc int32
 14081  	_ = pApi
 14082  
 14083  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 14084  	if rc == SQLITE_OK {
 14085  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 14086  	}
 14087  	return rc
 14088  }
 14089  
 14090  type Decimal1 = struct {
 14091  	Fsign        uint8
 14092  	Foom         uint8
 14093  	FisNull      uint8
 14094  	FisInit      uint8
 14095  	FnDigit      int32
 14096  	FnFrac       int32
 14097  	F__ccgo_pad1 [4]byte
 14098  	Fa           uintptr
 14099  }
 14100  
 14101  type Decimal = Decimal1
 14102  
 14103  func decimal_clear(tls *libc.TLS, p uintptr) {
 14104  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 14105  }
 14106  
 14107  func decimal_free(tls *libc.TLS, p uintptr) {
 14108  	if p != 0 {
 14109  		decimal_clear(tls, p)
 14110  		sqlite3.Xsqlite3_free(tls, p)
 14111  	}
 14112  }
 14113  
 14114  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 14115  	var p uintptr
 14116  	var n int32
 14117  	var i int32
 14118  	var zIn uintptr
 14119  	var iExp int32
 14120  	var j int32
 14121  	var neg int32
 14122  	var c uint8
 14123  	var nExtra int32
 14124  	iExp = 0
 14125  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 14126  	if !(p == uintptr(0)) {
 14127  		goto __1
 14128  	}
 14129  	goto new_no_mem
 14130  __1:
 14131  	;
 14132  	(*Decimal)(unsafe.Pointer(p)).Fsign = uint8(0)
 14133  	(*Decimal)(unsafe.Pointer(p)).Foom = uint8(0)
 14134  	(*Decimal)(unsafe.Pointer(p)).FisInit = uint8(1)
 14135  	(*Decimal)(unsafe.Pointer(p)).FisNull = uint8(0)
 14136  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 14137  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14138  	if !(zAlt != 0) {
 14139  		goto __2
 14140  	}
 14141  	n = nAlt
 14142  	zIn = zAlt
 14143  	goto __3
 14144  __2:
 14145  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 14146  		goto __4
 14147  	}
 14148  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 14149  	(*Decimal)(unsafe.Pointer(p)).FisNull = uint8(1)
 14150  	return p
 14151  __4:
 14152  	;
 14153  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 14154  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 14155  __3:
 14156  	;
 14157  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 14158  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14159  		goto __5
 14160  	}
 14161  	goto new_no_mem
 14162  __5:
 14163  	;
 14164  	i = 0
 14165  __6:
 14166  	if !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))))*2)))&int32(_ISspace) != 0) {
 14167  		goto __8
 14168  	}
 14169  	goto __7
 14170  __7:
 14171  	i++
 14172  	goto __6
 14173  	goto __8
 14174  __8:
 14175  	;
 14176  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 14177  		goto __9
 14178  	}
 14179  	(*Decimal)(unsafe.Pointer(p)).Fsign = uint8(1)
 14180  	i++
 14181  	goto __10
 14182  __9:
 14183  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 14184  		goto __11
 14185  	}
 14186  	i++
 14187  __11:
 14188  	;
 14189  __10:
 14190  	;
 14191  __12:
 14192  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 14193  		goto __13
 14194  	}
 14195  	i++
 14196  	goto __12
 14197  __13:
 14198  	;
 14199  __14:
 14200  	if !(i < n) {
 14201  		goto __15
 14202  	}
 14203  	c = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 14204  	if !(int32(c) >= '0' && int32(c) <= '9') {
 14205  		goto __16
 14206  	}
 14207  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 14208  	goto __17
 14209  __16:
 14210  	if !(int32(c) == '.') {
 14211  		goto __18
 14212  	}
 14213  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 14214  	goto __19
 14215  __18:
 14216  	if !(int32(c) == 'e' || int32(c) == 'E') {
 14217  		goto __20
 14218  	}
 14219  	j = i + 1
 14220  	neg = 0
 14221  	if !(j >= n) {
 14222  		goto __21
 14223  	}
 14224  	goto __15
 14225  __21:
 14226  	;
 14227  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 14228  		goto __22
 14229  	}
 14230  	neg = 1
 14231  	j++
 14232  	goto __23
 14233  __22:
 14234  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 14235  		goto __24
 14236  	}
 14237  	j++
 14238  __24:
 14239  	;
 14240  __23:
 14241  	;
 14242  __25:
 14243  	if !(j < n && iExp < 1000000) {
 14244  		goto __26
 14245  	}
 14246  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 14247  		goto __27
 14248  	}
 14249  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 14250  __27:
 14251  	;
 14252  	j++
 14253  	goto __25
 14254  __26:
 14255  	;
 14256  	if !(neg != 0) {
 14257  		goto __28
 14258  	}
 14259  	iExp = -iExp
 14260  __28:
 14261  	;
 14262  	goto __15
 14263  __20:
 14264  	;
 14265  __19:
 14266  	;
 14267  __17:
 14268  	;
 14269  	i++
 14270  	goto __14
 14271  __15:
 14272  	;
 14273  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 14274  		goto __29
 14275  	}
 14276  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 14277  __29:
 14278  	;
 14279  	if !(iExp > 0) {
 14280  		goto __30
 14281  	}
 14282  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 14283  		goto __32
 14284  	}
 14285  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 14286  		goto __33
 14287  	}
 14288  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 14289  	iExp = 0
 14290  	goto __34
 14291  __33:
 14292  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14293  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14294  __34:
 14295  	;
 14296  __32:
 14297  	;
 14298  	if !(iExp > 0) {
 14299  		goto __35
 14300  	}
 14301  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 14302  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14303  		goto __36
 14304  	}
 14305  	goto new_no_mem
 14306  __36:
 14307  	;
 14308  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(iExp))
 14309  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 14310  __35:
 14311  	;
 14312  	goto __31
 14313  __30:
 14314  	if !(iExp < 0) {
 14315  		goto __37
 14316  	}
 14317  	iExp = -iExp
 14318  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 14319  	if !(nExtra != 0) {
 14320  		goto __38
 14321  	}
 14322  	if !(nExtra >= iExp) {
 14323  		goto __39
 14324  	}
 14325  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 14326  	iExp = 0
 14327  	goto __40
 14328  __39:
 14329  	iExp = iExp - nExtra
 14330  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 14331  __40:
 14332  	;
 14333  __38:
 14334  	;
 14335  	if !(iExp > 0) {
 14336  		goto __41
 14337  	}
 14338  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 14339  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14340  		goto __42
 14341  	}
 14342  	goto new_no_mem
 14343  __42:
 14344  	;
 14345  	libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14346  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(iExp))
 14347  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 14348  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 14349  __41:
 14350  	;
 14351  __37:
 14352  	;
 14353  __31:
 14354  	;
 14355  	return p
 14356  
 14357  new_no_mem:
 14358  	if !(pCtx != 0) {
 14359  		goto __43
 14360  	}
 14361  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14362  __43:
 14363  	;
 14364  	sqlite3.Xsqlite3_free(tls, p)
 14365  	return uintptr(0)
 14366  }
 14367  
 14368  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 14369  	var z uintptr
 14370  	var i int32
 14371  	var j int32
 14372  	var n int32
 14373  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 14374  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14375  		return
 14376  	}
 14377  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 14378  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 14379  		return
 14380  	}
 14381  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 14382  	if z == uintptr(0) {
 14383  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14384  		return
 14385  	}
 14386  	i = 0
 14387  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 14388  		(*Decimal)(unsafe.Pointer(p)).Fsign = uint8(0)
 14389  	}
 14390  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 14391  		*(*uint8)(unsafe.Pointer(z)) = uint8('-')
 14392  		i = 1
 14393  	}
 14394  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14395  	if n <= 0 {
 14396  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8('0')
 14397  	}
 14398  	j = 0
 14399  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 14400  		j++
 14401  		n--
 14402  	}
 14403  	for n > 0 {
 14404  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 14405  		j++
 14406  		n--
 14407  	}
 14408  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 14409  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8('.')
 14410  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 14411  			*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = uint8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 14412  			j++
 14413  		}
 14414  	}
 14415  	*(*uint8)(unsafe.Pointer(z + uintptr(i))) = uint8(0)
 14416  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 14417  }
 14418  
 14419  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14420  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14421  	_ = argc
 14422  	decimal_result(tls, context, p)
 14423  	decimal_free(tls, p)
 14424  }
 14425  
 14426  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 14427  	var nASig int32
 14428  	var nBSig int32
 14429  	var rc int32
 14430  	var n int32
 14431  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14432  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14433  			return -1
 14434  		}
 14435  		return +1
 14436  	}
 14437  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14438  		var pTemp uintptr = pA
 14439  		pA = pB
 14440  		pB = pTemp
 14441  	}
 14442  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14443  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14444  	if nASig != nBSig {
 14445  		return nASig - nBSig
 14446  	}
 14447  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 14448  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 14449  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14450  	}
 14451  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(n))
 14452  	if rc == 0 {
 14453  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14454  	}
 14455  	return rc
 14456  }
 14457  
 14458  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14459  	var pA uintptr
 14460  	var pB uintptr
 14461  	var rc int32
 14462  	pA = uintptr(0)
 14463  	pB = uintptr(0)
 14464  
 14465  	_ = argc
 14466  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14467  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 14468  		goto __1
 14469  	}
 14470  	goto cmp_done
 14471  __1:
 14472  	;
 14473  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14474  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14475  		goto __2
 14476  	}
 14477  	goto cmp_done
 14478  __2:
 14479  	;
 14480  	rc = decimal_cmp(tls, pA, pB)
 14481  	if !(rc < 0) {
 14482  		goto __3
 14483  	}
 14484  	rc = -1
 14485  	goto __4
 14486  __3:
 14487  	if !(rc > 0) {
 14488  		goto __5
 14489  	}
 14490  	rc = +1
 14491  __5:
 14492  	;
 14493  __4:
 14494  	;
 14495  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 14496  cmp_done:
 14497  	decimal_free(tls, pA)
 14498  	decimal_free(tls, pB)
 14499  }
 14500  
 14501  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 14502  	var nAddSig int32
 14503  	var nAddFrac int32
 14504  	if p == uintptr(0) {
 14505  		return
 14506  	}
 14507  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14508  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 14509  	if nAddFrac == 0 && nAddSig == 0 {
 14510  		return
 14511  	}
 14512  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 14513  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14514  		(*Decimal)(unsafe.Pointer(p)).Foom = uint8(1)
 14515  		return
 14516  	}
 14517  	if nAddSig != 0 {
 14518  		libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14519  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(nAddSig))
 14520  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 14521  	}
 14522  	if nAddFrac != 0 {
 14523  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(nAddFrac))
 14524  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 14525  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 14526  	}
 14527  }
 14528  
 14529  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 14530  	var nSig int32
 14531  	var nFrac int32
 14532  	var nDigit int32
 14533  	var i int32
 14534  	var rc int32
 14535  	if pA == uintptr(0) {
 14536  		return
 14537  	}
 14538  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14539  		(*Decimal)(unsafe.Pointer(pA)).Foom = uint8(1)
 14540  		return
 14541  	}
 14542  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 14543  		(*Decimal)(unsafe.Pointer(pA)).FisNull = uint8(1)
 14544  		return
 14545  	}
 14546  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14547  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 14548  		nSig--
 14549  	}
 14550  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14551  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14552  	}
 14553  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14554  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14555  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14556  	}
 14557  	nDigit = nSig + nFrac + 1
 14558  	decimal_expand(tls, pA, nDigit, nFrac)
 14559  	decimal_expand(tls, pB, nDigit, nFrac)
 14560  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14561  		(*Decimal)(unsafe.Pointer(pA)).Foom = uint8(1)
 14562  	} else {
 14563  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14564  			var carry int32 = 0
 14565  			for i = nDigit - 1; i >= 0; i-- {
 14566  				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
 14567  				if x >= 10 {
 14568  					carry = 1
 14569  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 14570  				} else {
 14571  					carry = 0
 14572  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14573  				}
 14574  			}
 14575  		} else {
 14576  			var aA uintptr
 14577  			var aB uintptr
 14578  			var borrow int32 = 0
 14579  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(nDigit))
 14580  			if rc < 0 {
 14581  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 14582  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 14583  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolUint8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 14584  			} else {
 14585  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 14586  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 14587  			}
 14588  			for i = nDigit - 1; i >= 0; i-- {
 14589  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 14590  				if x < 0 {
 14591  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 14592  					borrow = 1
 14593  				} else {
 14594  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14595  					borrow = 0
 14596  				}
 14597  			}
 14598  		}
 14599  	}
 14600  }
 14601  
 14602  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 14603  	var zA uintptr = pKey1
 14604  	var zB uintptr = pKey2
 14605  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 14606  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 14607  	var rc int32
 14608  	_ = notUsed
 14609  	if pA == uintptr(0) || pB == uintptr(0) {
 14610  		rc = 0
 14611  	} else {
 14612  		rc = decimal_cmp(tls, pA, pB)
 14613  	}
 14614  	decimal_free(tls, pA)
 14615  	decimal_free(tls, pB)
 14616  	return rc
 14617  }
 14618  
 14619  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14620  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14621  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14622  	_ = argc
 14623  	decimal_add(tls, pA, pB)
 14624  	decimal_result(tls, context, pA)
 14625  	decimal_free(tls, pA)
 14626  	decimal_free(tls, pB)
 14627  }
 14628  
 14629  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14630  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14631  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14632  	_ = argc
 14633  	if pB != 0 {
 14634  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolUint8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 14635  		decimal_add(tls, pA, pB)
 14636  		decimal_result(tls, context, pA)
 14637  	}
 14638  	decimal_free(tls, pA)
 14639  	decimal_free(tls, pB)
 14640  }
 14641  
 14642  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14643  	var p uintptr
 14644  	var pArg uintptr
 14645  	_ = argc
 14646  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14647  	if p == uintptr(0) {
 14648  		return
 14649  	}
 14650  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 14651  		(*Decimal)(unsafe.Pointer(p)).FisInit = uint8(1)
 14652  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 14653  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14654  			(*Decimal)(unsafe.Pointer(p)).Foom = uint8(1)
 14655  		} else {
 14656  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 14657  		}
 14658  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 14659  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14660  	}
 14661  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14662  		return
 14663  	}
 14664  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14665  	decimal_add(tls, p, pArg)
 14666  	decimal_free(tls, pArg)
 14667  }
 14668  
 14669  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14670  	var p uintptr
 14671  	var pArg uintptr
 14672  	_ = argc
 14673  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14674  	if p == uintptr(0) {
 14675  		return
 14676  	}
 14677  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14678  		return
 14679  	}
 14680  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14681  	if pArg != 0 {
 14682  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolUint8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 14683  	}
 14684  	decimal_add(tls, p, pArg)
 14685  	decimal_free(tls, pArg)
 14686  }
 14687  
 14688  func decimalSumValue(tls *libc.TLS, context uintptr) {
 14689  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14690  	if p == uintptr(0) {
 14691  		return
 14692  	}
 14693  	decimal_result(tls, context, p)
 14694  }
 14695  
 14696  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 14697  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14698  	if p == uintptr(0) {
 14699  		return
 14700  	}
 14701  	decimal_result(tls, context, p)
 14702  	decimal_clear(tls, p)
 14703  }
 14704  
 14705  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14706  	var pA uintptr
 14707  	var pB uintptr
 14708  	var acc uintptr
 14709  	var i int32
 14710  	var j int32
 14711  	var k int32
 14712  	var minFrac int32
 14713  	var f int8
 14714  	var carry int32
 14715  	var x int32
 14716  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14717  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14718  	acc = uintptr(0)
 14719  	_ = argc
 14720  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 14721  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14722  		goto __1
 14723  	}
 14724  	goto mul_end
 14725  __1:
 14726  	;
 14727  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14728  	if !(acc == uintptr(0)) {
 14729  		goto __2
 14730  	}
 14731  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14732  	goto mul_end
 14733  __2:
 14734  	;
 14735  	libc.Xmemset(tls, acc, 0, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14736  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14737  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 14738  		goto __3
 14739  	}
 14740  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14741  __3:
 14742  	;
 14743  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 14744  __4:
 14745  	if !(i >= 0) {
 14746  		goto __6
 14747  	}
 14748  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 14749  	carry = 0
 14750  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 14751  	k = i + j + 3
 14752  __7:
 14753  	if !(j >= 0) {
 14754  		goto __9
 14755  	}
 14756  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 14757  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14758  	carry = x / 10
 14759  	goto __8
 14760  __8:
 14761  	j--
 14762  	k--
 14763  	goto __7
 14764  	goto __9
 14765  __9:
 14766  	;
 14767  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 14768  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14769  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 14770  	goto __5
 14771  __5:
 14772  	i--
 14773  	goto __4
 14774  	goto __6
 14775  __6:
 14776  	;
 14777  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 14778  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 14779  	acc = uintptr(0)
 14780  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 14781  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14782  	*(*uint8)(unsafe.Pointer(pA)) ^= uint8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 14783  __10:
 14784  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 14785  		goto __11
 14786  	}
 14787  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 14788  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 14789  	goto __10
 14790  __11:
 14791  	;
 14792  	decimal_result(tls, context, pA)
 14793  
 14794  mul_end:
 14795  	sqlite3.Xsqlite3_free(tls, acc)
 14796  	decimal_free(tls, pA)
 14797  	decimal_free(tls, pB)
 14798  }
 14799  
 14800  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14801  	var rc int32 = SQLITE_OK
 14802  	var i uint32
 14803  	_ = pzErrMsg
 14804  
 14805  	_ = pApi
 14806  
 14807  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc))/uint64(unsafe.Sizeof(struct {
 14808  		FzFuncName   uintptr
 14809  		FnArg        int32
 14810  		F__ccgo_pad1 [4]byte
 14811  		FxFunc       uintptr
 14812  	}{})) && rc == SQLITE_OK; i++ {
 14813  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 14814  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 14815  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 14816  	}
 14817  	if rc == SQLITE_OK {
 14818  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 14819  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 14820  			*(*uintptr)(unsafe.Pointer(&struct {
 14821  				f func(*libc.TLS, uintptr, int32, uintptr)
 14822  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 14823  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 14824  				f func(*libc.TLS, uintptr, int32, uintptr)
 14825  			}{decimalSumInverse})), uintptr(0))
 14826  	}
 14827  	if rc == SQLITE_OK {
 14828  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 14829  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 14830  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 14831  			}{decimalCollFunc})))
 14832  	}
 14833  	return rc
 14834  }
 14835  
 14836  var aFunc = [5]struct {
 14837  	FzFuncName   uintptr
 14838  	FnArg        int32
 14839  	F__ccgo_pad1 [4]byte
 14840  	FxFunc       uintptr
 14841  }{
 14842  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 14843  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 14844  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 14845  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 14846  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 14847  }
 14848  
 14849  type EvalResult = struct {
 14850  	Fz           uintptr
 14851  	FzSep        uintptr
 14852  	FszSep       int32
 14853  	F__ccgo_pad1 [4]byte
 14854  	FnAlloc      sqlite3_int64
 14855  	FnUsed       sqlite3_int64
 14856  }
 14857  
 14858  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 14859  	var p uintptr = pCtx
 14860  	var i int32
 14861  	if argv == uintptr(0) {
 14862  		return 0
 14863  	}
 14864  	for i = 0; i < argc; i++ {
 14865  		var z uintptr
 14866  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 14867  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 14868  		} else {
 14869  			z = ts + 584
 14870  		}
 14871  		var sz size_t = libc.Xstrlen(tls, z)
 14872  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 14873  			var zNew uintptr
 14874  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = sqlite3_int64(uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2)) + sz + uint64((*EvalResult)(unsafe.Pointer(p)).FszSep) + uint64(1))
 14875  
 14876  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 14877  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 14878  			} else {
 14879  				zNew = uintptr(0)
 14880  			}
 14881  			if zNew == uintptr(0) {
 14882  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 14883  				libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14884  				return 1
 14885  			}
 14886  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 14887  		}
 14888  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 14889  			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))
 14890  			*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 14891  		}
 14892  		libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz)
 14893  		*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64(sz)
 14894  	}
 14895  	return 0
 14896  }
 14897  
 14898  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14899  	bp := tls.Alloc(48)
 14900  	defer tls.Free(48)
 14901  
 14902  	var zSql uintptr
 14903  	var db uintptr
 14904  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 14905  	var rc int32
 14906  
 14907  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14908  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 14909  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14910  	if zSql == uintptr(0) {
 14911  		return
 14912  	}
 14913  	if argc > 1 {
 14914  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 14915  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14916  			return
 14917  		}
 14918  	}
 14919  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 14920  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 14921  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 14922  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 14923  	}{callback})), bp, bp+40)
 14924  	if rc != SQLITE_OK {
 14925  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 40)), -1)
 14926  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 14927  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14928  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14929  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 14930  	} else {
 14931  		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})))
 14932  	}
 14933  }
 14934  
 14935  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14936  	var rc int32 = SQLITE_OK
 14937  	_ = pApi
 14938  
 14939  	_ = pzErrMsg
 14940  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 14941  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14942  		*(*uintptr)(unsafe.Pointer(&struct {
 14943  			f func(*libc.TLS, uintptr, int32, uintptr)
 14944  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14945  	if rc == SQLITE_OK {
 14946  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 14947  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14948  			*(*uintptr)(unsafe.Pointer(&struct {
 14949  				f func(*libc.TLS, uintptr, int32, uintptr)
 14950  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14951  	}
 14952  	return rc
 14953  }
 14954  
 14955  type explain_vtab1 = struct {
 14956  	Fbase sqlite3_vtab
 14957  	Fdb   uintptr
 14958  }
 14959  
 14960  type explain_vtab = explain_vtab1
 14961  
 14962  type explain_cursor1 = struct {
 14963  	Fbase        sqlite3_vtab_cursor
 14964  	Fdb          uintptr
 14965  	FzSql        uintptr
 14966  	FpExplain    uintptr
 14967  	Frc          int32
 14968  	F__ccgo_pad1 [4]byte
 14969  }
 14970  
 14971  type explain_cursor = explain_cursor1
 14972  
 14973  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14974  	var pNew uintptr
 14975  	var rc int32
 14976  
 14977  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 14978  		ts+4901)
 14979  	if rc == SQLITE_OK {
 14980  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 14981  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14982  		if pNew == uintptr(0) {
 14983  			return SQLITE_NOMEM
 14984  		}
 14985  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(explain_vtab{})))
 14986  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 14987  	}
 14988  	return rc
 14989  }
 14990  
 14991  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14992  	sqlite3.Xsqlite3_free(tls, pVtab)
 14993  	return SQLITE_OK
 14994  }
 14995  
 14996  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14997  	var pCur uintptr
 14998  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 14999  	if pCur == uintptr(0) {
 15000  		return SQLITE_NOMEM
 15001  	}
 15002  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(explain_cursor{})))
 15003  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 15004  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15005  	return SQLITE_OK
 15006  }
 15007  
 15008  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 15009  	var pCur uintptr = cur
 15010  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15011  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 15012  	sqlite3.Xsqlite3_free(tls, pCur)
 15013  	return SQLITE_OK
 15014  }
 15015  
 15016  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 15017  	var pCur uintptr = cur
 15018  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15019  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 15020  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 15021  	}
 15022  	return SQLITE_OK
 15023  }
 15024  
 15025  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15026  	var pCur uintptr = cur
 15027  	if i == EXPLN_COLUMN_SQL {
 15028  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 15029  	} else {
 15030  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 15031  	}
 15032  	return SQLITE_OK
 15033  }
 15034  
 15035  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15036  	var pCur uintptr = cur
 15037  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 15038  	return SQLITE_OK
 15039  }
 15040  
 15041  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 15042  	var pCur uintptr = cur
 15043  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 15044  }
 15045  
 15046  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15047  	bp := tls.Alloc(16)
 15048  	defer tls.Free(16)
 15049  
 15050  	var pCur uintptr = pVtabCursor
 15051  	var zSql uintptr = uintptr(0)
 15052  	var rc int32
 15053  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15054  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 15055  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 15056  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 15057  		return SQLITE_OK
 15058  	}
 15059  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 15060  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 15061  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 15062  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 15063  	}
 15064  	if zSql == uintptr(0) {
 15065  		rc = SQLITE_NOMEM
 15066  	} else {
 15067  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+24, uintptr(0))
 15068  		sqlite3.Xsqlite3_free(tls, zSql)
 15069  	}
 15070  	if rc != 0 {
 15071  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15072  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 15073  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 15074  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 15075  	} else {
 15076  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 15077  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 15078  			rc = SQLITE_OK
 15079  		} else {
 15080  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 15081  		}
 15082  	}
 15083  	return rc
 15084  }
 15085  
 15086  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15087  	var i int32
 15088  	var idx int32 = -1
 15089  	var unusable int32 = 0
 15090  
 15091  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 15092  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 15093  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 15094  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 15095  			continue
 15096  		}
 15097  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 15098  			unusable = 1
 15099  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15100  			idx = i
 15101  		}
 15102  	}
 15103  	if idx >= 0 {
 15104  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15105  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15106  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 15107  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 15108  	} else if unusable != 0 {
 15109  		return SQLITE_CONSTRAINT
 15110  	}
 15111  	return SQLITE_OK
 15112  }
 15113  
 15114  var explainModule = sqlite3_module{
 15115  	FxConnect:    0,
 15116  	FxBestIndex:  0,
 15117  	FxDisconnect: 0,
 15118  	FxOpen:       0,
 15119  	FxClose:      0,
 15120  	FxFilter:     0,
 15121  	FxNext:       0,
 15122  	FxEof:        0,
 15123  	FxColumn:     0,
 15124  	FxRowid:      0,
 15125  }
 15126  
 15127  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 15128  	var rc int32 = SQLITE_OK
 15129  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 15130  	return rc
 15131  }
 15132  
 15133  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15134  	var rc int32 = SQLITE_OK
 15135  	_ = pApi
 15136  
 15137  	rc = sqlite3ExplainVtabInit(tls, db)
 15138  	return rc
 15139  }
 15140  
 15141  type flock = struct {
 15142  	Fl_type      int16
 15143  	Fl_whence    int16
 15144  	F__ccgo_pad1 [4]byte
 15145  	Fl_start     int64
 15146  	Fl_len       int64
 15147  	Fl_pid       int32
 15148  	F__ccgo_pad2 [4]byte
 15149  }
 15150  
 15151  type useconds_t = uint32
 15152  
 15153  type intptr_t = int64
 15154  
 15155  type socklen_t = uint32
 15156  
 15157  type dirent = struct {
 15158  	Fd_ino       uint64
 15159  	Fd_off       int64
 15160  	Fd_reclen    uint16
 15161  	Fd_type      uint8
 15162  	Fd_name      [256]uint8
 15163  	F__ccgo_pad1 [5]byte
 15164  }
 15165  
 15166  type timezone = struct {
 15167  	Ftz_minuteswest int32
 15168  	Ftz_dsttime     int32
 15169  }
 15170  
 15171  type itimerval = struct {
 15172  	Fit_interval struct {
 15173  		Ftv_sec  int64
 15174  		Ftv_usec int64
 15175  	}
 15176  	Fit_value struct {
 15177  		Ftv_sec  int64
 15178  		Ftv_usec int64
 15179  	}
 15180  }
 15181  
 15182  type tm = struct {
 15183  	Ftm_sec      int32
 15184  	Ftm_min      int32
 15185  	Ftm_hour     int32
 15186  	Ftm_mday     int32
 15187  	Ftm_mon      int32
 15188  	Ftm_year     int32
 15189  	Ftm_wday     int32
 15190  	Ftm_yday     int32
 15191  	Ftm_isdst    int32
 15192  	F__ccgo_pad1 [4]byte
 15193  	Ftm_gmtoff   int64
 15194  	Ftm_zone     uintptr
 15195  }
 15196  
 15197  type itimerspec = struct {
 15198  	Fit_interval struct {
 15199  		Ftv_sec  int64
 15200  		Ftv_nsec int64
 15201  	}
 15202  	Fit_value struct {
 15203  		Ftv_sec  int64
 15204  		Ftv_nsec int64
 15205  	}
 15206  }
 15207  
 15208  type sigevent = struct {
 15209  	Fsigev_value struct {
 15210  		F__ccgo_pad1 [0]uint64
 15211  		Fsival_int   int32
 15212  		F__ccgo_pad2 [4]byte
 15213  	}
 15214  	Fsigev_signo  int32
 15215  	Fsigev_notify int32
 15216  	F_sigev_un    struct {
 15217  		F__ccgo_pad1 [0]uint64
 15218  		F_pad        [12]int32
 15219  	}
 15220  }
 15221  
 15222  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 15223  	var in uintptr
 15224  	var nIn sqlite3_int64
 15225  	var pBuf uintptr
 15226  	var db uintptr
 15227  	var mxBlob int32
 15228  
 15229  	in = libc.Xfopen(tls, zName, ts+4402)
 15230  	if in == uintptr(0) {
 15231  		return
 15232  	}
 15233  	libc.Xfseek(tls, in, int64(0), SEEK_END)
 15234  	nIn = libc.Xftell(tls, in)
 15235  	libc.Xrewind(tls, in)
 15236  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 15237  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 15238  	if nIn > sqlite3_int64(mxBlob) {
 15239  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 15240  		libc.Xfclose(tls, in)
 15241  		return
 15242  	}
 15243  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 15244  		if nIn != 0 {
 15245  			return uint64(nIn)
 15246  		}
 15247  		return uint64(1)
 15248  	}())
 15249  	if pBuf == uintptr(0) {
 15250  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15251  		libc.Xfclose(tls, in)
 15252  		return
 15253  	}
 15254  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint64(1), size_t(nIn), in)) {
 15255  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 15256  	} else {
 15257  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 15258  		sqlite3.Xsqlite3_free(tls, pBuf)
 15259  	}
 15260  	libc.Xfclose(tls, in)
 15261  }
 15262  
 15263  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15264  	var zName uintptr
 15265  	_ = argc
 15266  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15267  	if zName == uintptr(0) {
 15268  		return
 15269  	}
 15270  	readFileContents(tls, context, zName)
 15271  }
 15272  
 15273  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 15274  	var zMsg uintptr = uintptr(0)
 15275  	var ap va_list
 15276  	_ = ap
 15277  	ap = va
 15278  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15279  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 15280  	sqlite3.Xsqlite3_free(tls, zMsg)
 15281  	_ = ap
 15282  }
 15283  
 15284  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15285  	return libc.Xstat(tls, zPath, pStatBuf)
 15286  }
 15287  
 15288  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15289  	return libc.Xlstat(tls, zPath, pStatBuf)
 15290  }
 15291  
 15292  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 15293  	bp := tls.Alloc(136)
 15294  	defer tls.Free(136)
 15295  
 15296  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 15297  	var rc int32 = SQLITE_OK
 15298  
 15299  	if zCopy == uintptr(0) {
 15300  		rc = SQLITE_NOMEM
 15301  	} else {
 15302  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 15303  		var i int32 = 1
 15304  
 15305  		for rc == SQLITE_OK {
 15306  			var rc2 int32
 15307  
 15308  			for ; int32(*(*uint8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 15309  			}
 15310  			if i == nCopy {
 15311  				break
 15312  			}
 15313  			*(*uint8)(unsafe.Pointer(zCopy + uintptr(i))) = uint8(0)
 15314  
 15315  			rc2 = fileStat(tls, zCopy, bp+8)
 15316  			if rc2 != 0 {
 15317  				if libc.Xmkdir(tls, zCopy, uint32(0777)) != 0 {
 15318  					rc = SQLITE_ERROR
 15319  				}
 15320  			} else {
 15321  				if !((*stat)(unsafe.Pointer(bp+8)).Fst_mode&uint32(0170000) == uint32(0040000)) {
 15322  					rc = SQLITE_ERROR
 15323  				}
 15324  			}
 15325  			*(*uint8)(unsafe.Pointer(zCopy + uintptr(i))) = uint8('/')
 15326  			i++
 15327  		}
 15328  
 15329  		sqlite3.Xsqlite3_free(tls, zCopy)
 15330  	}
 15331  
 15332  	return rc
 15333  }
 15334  
 15335  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 15336  	bp := tls.Alloc(160)
 15337  	defer tls.Free(160)
 15338  
 15339  	if zFile == uintptr(0) {
 15340  		return 1
 15341  	}
 15342  	if mode&mode_t(0170000) == mode_t(0120000) {
 15343  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 15344  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 15345  			return 1
 15346  		}
 15347  	} else {
 15348  		if mode&mode_t(0170000) == mode_t(0040000) {
 15349  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 15350  				if *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) != EEXIST ||
 15351  					0 != fileStat(tls, zFile, bp) ||
 15352  					!((*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0170000) == uint32(0040000)) ||
 15353  					(*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0777) != mode&mode_t(0777) && 0 != libc.Xchmod(tls, zFile, mode&mode_t(0777)) {
 15354  					return 1
 15355  				}
 15356  			}
 15357  		} else {
 15358  			var nWrite sqlite3_int64 = int64(0)
 15359  			var z uintptr
 15360  			var rc int32 = 0
 15361  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 15362  			if out == uintptr(0) {
 15363  				return 1
 15364  			}
 15365  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 15366  			if z != 0 {
 15367  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint64(1), uint64(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 15368  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 15369  				if nWrite != n {
 15370  					rc = 1
 15371  				}
 15372  			}
 15373  			libc.Xfclose(tls, out)
 15374  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, mode&mode_t(0777)) != 0 {
 15375  				rc = 1
 15376  			}
 15377  			if rc != 0 {
 15378  				return 2
 15379  			}
 15380  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 15381  		}
 15382  	}
 15383  
 15384  	if mtime >= int64(0) {
 15385  		(*timeval)(unsafe.Pointer(bp + 128)).Ftv_usec = libc.AssignPtrInt64(bp+128+1*16+8, int64(0))
 15386  		(*timeval)(unsafe.Pointer(bp + 128)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 15387  		(*timeval)(unsafe.Pointer(bp + 128 + 1*16)).Ftv_sec = mtime
 15388  		if libc.Xutimes(tls, zFile, bp+128) != 0 {
 15389  			return 1
 15390  		}
 15391  	}
 15392  
 15393  	return 0
 15394  }
 15395  
 15396  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15397  	bp := tls.Alloc(24)
 15398  	defer tls.Free(24)
 15399  
 15400  	var zFile uintptr
 15401  	var mode mode_t = mode_t(0)
 15402  	var res int32
 15403  	var mtime sqlite3_int64 = int64(-1)
 15404  
 15405  	if argc < 2 || argc > 4 {
 15406  		sqlite3.Xsqlite3_result_error(tls, context,
 15407  			ts+4985, -1)
 15408  		return
 15409  	}
 15410  
 15411  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15412  	if zFile == uintptr(0) {
 15413  		return
 15414  	}
 15415  	if argc >= 3 {
 15416  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 15417  	}
 15418  	if argc == 4 {
 15419  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 15420  	}
 15421  
 15422  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 15423  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) == ENOENT {
 15424  		if makeDirectory(tls, zFile) == SQLITE_OK {
 15425  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 15426  		}
 15427  	}
 15428  
 15429  	if argc > 2 && res != 0 {
 15430  		if mode&mode_t(0170000) == mode_t(0120000) {
 15431  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 15432  		} else if mode&mode_t(0170000) == mode_t(0040000) {
 15433  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 15434  		} else {
 15435  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 15436  		}
 15437  	}
 15438  }
 15439  
 15440  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15441  	bp := tls.Alloc(16)
 15442  	defer tls.Free(16)
 15443  
 15444  	var i int32
 15445  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15446  
 15447  	_ = argc
 15448  	if iMode&0170000 == 0120000 {
 15449  		*(*uint8)(unsafe.Pointer(bp)) = uint8('l')
 15450  	} else if iMode&0170000 == 0100000 {
 15451  		*(*uint8)(unsafe.Pointer(bp)) = uint8('-')
 15452  	} else if iMode&0170000 == 0040000 {
 15453  		*(*uint8)(unsafe.Pointer(bp)) = uint8('d')
 15454  	} else {
 15455  		*(*uint8)(unsafe.Pointer(bp)) = uint8('?')
 15456  	}
 15457  	for i = 0; i < 3; i++ {
 15458  		var m int32 = iMode >> ((2 - i) * 3)
 15459  		var a uintptr = bp + uintptr(1+i*3)
 15460  		*(*uint8)(unsafe.Pointer(a)) = func() uint8 {
 15461  			if m&0x4 != 0 {
 15462  				return uint8('r')
 15463  			}
 15464  			return uint8('-')
 15465  		}()
 15466  		*(*uint8)(unsafe.Pointer(a + 1)) = func() uint8 {
 15467  			if m&0x2 != 0 {
 15468  				return uint8('w')
 15469  			}
 15470  			return uint8('-')
 15471  		}()
 15472  		*(*uint8)(unsafe.Pointer(a + 2)) = func() uint8 {
 15473  			if m&0x1 != 0 {
 15474  				return uint8('x')
 15475  			}
 15476  			return uint8('-')
 15477  		}()
 15478  	}
 15479  	*(*uint8)(unsafe.Pointer(bp + 10)) = uint8(0)
 15480  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 15481  }
 15482  
 15483  type fsdir_cursor1 = struct {
 15484  	Fbase        sqlite3_vtab_cursor
 15485  	FnLvl        int32
 15486  	FiLvl        int32
 15487  	FaLvl        uintptr
 15488  	FzBase       uintptr
 15489  	FnBase       int32
 15490  	F__ccgo_pad1 [4]byte
 15491  	FsStat       struct {
 15492  		Fst_dev     uint64
 15493  		Fst_ino     uint64
 15494  		Fst_mode    uint32
 15495  		Fst_nlink   uint32
 15496  		Fst_uid     uint32
 15497  		Fst_gid     uint32
 15498  		Fst_rdev    uint64
 15499  		F__pad1     uint64
 15500  		Fst_size    int64
 15501  		Fst_blksize int32
 15502  		F__pad2     int32
 15503  		Fst_blocks  int64
 15504  		Fst_atim    struct {
 15505  			Ftv_sec  int64
 15506  			Ftv_nsec int64
 15507  		}
 15508  		Fst_mtim struct {
 15509  			Ftv_sec  int64
 15510  			Ftv_nsec int64
 15511  		}
 15512  		Fst_ctim struct {
 15513  			Ftv_sec  int64
 15514  			Ftv_nsec int64
 15515  		}
 15516  		F__glibc_reserved [2]int32
 15517  	}
 15518  	FzPath  uintptr
 15519  	FiRowid sqlite3_int64
 15520  }
 15521  
 15522  type fsdir_cursor = fsdir_cursor1
 15523  type FsdirLevel1 = struct {
 15524  	FpDir uintptr
 15525  	FzDir uintptr
 15526  }
 15527  
 15528  type FsdirLevel = FsdirLevel1
 15529  
 15530  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 15531  
 15532  type fsdir_tab = fsdir_tab1
 15533  
 15534  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15535  	var pNew uintptr = uintptr(0)
 15536  	var rc int32
 15537  	_ = pAux
 15538  	_ = argc
 15539  	_ = argv
 15540  	_ = pzErr
 15541  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 15542  	if rc == SQLITE_OK {
 15543  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 15544  		if pNew == uintptr(0) {
 15545  			return SQLITE_NOMEM
 15546  		}
 15547  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fsdir_tab{})))
 15548  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 15549  	}
 15550  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15551  	return rc
 15552  }
 15553  
 15554  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15555  	sqlite3.Xsqlite3_free(tls, pVtab)
 15556  	return SQLITE_OK
 15557  }
 15558  
 15559  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 15560  	var pCur uintptr
 15561  	_ = p
 15562  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 15563  	if pCur == uintptr(0) {
 15564  		return SQLITE_NOMEM
 15565  	}
 15566  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fsdir_cursor{})))
 15567  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15568  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15569  	return SQLITE_OK
 15570  }
 15571  
 15572  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 15573  	var i int32
 15574  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 15575  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*16
 15576  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 15577  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15578  		}
 15579  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15580  	}
 15581  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15582  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 15583  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 15584  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15585  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 15586  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 15587  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 15588  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15589  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 15590  }
 15591  
 15592  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 15593  	var pCur uintptr = cur
 15594  
 15595  	fsdirResetCursor(tls, pCur)
 15596  	sqlite3.Xsqlite3_free(tls, pCur)
 15597  	return SQLITE_OK
 15598  }
 15599  
 15600  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 15601  	var ap va_list
 15602  	_ = ap
 15603  	ap = va
 15604  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15605  	_ = ap
 15606  }
 15607  
 15608  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 15609  	bp := tls.Alloc(32)
 15610  	defer tls.Free(32)
 15611  
 15612  	var pCur uintptr = cur
 15613  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15614  
 15615  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 15616  	if m&mode_t(0170000) == mode_t(0040000) {
 15617  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 15618  		var pLvl uintptr
 15619  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 15620  			var nNew int32 = iNew + 1
 15621  			var nByte sqlite3_int64 = sqlite3_int64(uint64(nNew) * uint64(unsafe.Sizeof(FsdirLevel{})))
 15622  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 15623  			if aNew == uintptr(0) {
 15624  				return SQLITE_NOMEM
 15625  			}
 15626  			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))
 15627  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 15628  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 15629  		}
 15630  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 15631  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*16
 15632  
 15633  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 15634  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15635  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15636  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 15637  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15638  			return SQLITE_ERROR
 15639  		}
 15640  	}
 15641  
 15642  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 15643  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*16
 15644  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15645  		if pEntry != 0 {
 15646  			if int32(*(*uint8)(unsafe.Pointer(pEntry + 19))) == '.' {
 15647  				if int32(*(*uint8)(unsafe.Pointer(pEntry + 19 + 1))) == '.' && int32(*(*uint8)(unsafe.Pointer(pEntry + 19 + 2))) == 0 {
 15648  					continue
 15649  				}
 15650  				if int32(*(*uint8)(unsafe.Pointer(pEntry + 19 + 1))) == 0 {
 15651  					continue
 15652  				}
 15653  			}
 15654  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15655  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+19))
 15656  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15657  				return SQLITE_NOMEM
 15658  			}
 15659  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15660  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15661  				return SQLITE_ERROR
 15662  			}
 15663  			return SQLITE_OK
 15664  		}
 15665  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15666  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15667  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 15668  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 15669  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 15670  	}
 15671  
 15672  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15673  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15674  	return SQLITE_OK
 15675  }
 15676  
 15677  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15678  	bp := tls.Alloc(64)
 15679  	defer tls.Free(64)
 15680  
 15681  	var pCur uintptr = cur
 15682  	switch i {
 15683  	case FSDIR_COLUMN_NAME:
 15684  		{
 15685  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 15686  			break
 15687  
 15688  		}
 15689  
 15690  	case FSDIR_COLUMN_MODE:
 15691  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 15692  		break
 15693  
 15694  	case FSDIR_COLUMN_MTIME:
 15695  		sqlite3.Xsqlite3_result_int64(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtim.Ftv_sec)
 15696  		break
 15697  
 15698  	case FSDIR_COLUMN_DATA:
 15699  		{
 15700  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15701  			if m&mode_t(0170000) == mode_t(0040000) {
 15702  				sqlite3.Xsqlite3_result_null(tls, ctx)
 15703  			} else if m&mode_t(0170000) == mode_t(0120000) {
 15704  				var aBuf uintptr = bp
 15705  				var nBuf sqlite3_int64 = int64(64)
 15706  				var n int32
 15707  
 15708  				for 1 != 0 {
 15709  					n = int32(libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint64(nBuf)))
 15710  					if sqlite3_int64(n) < nBuf {
 15711  						break
 15712  					}
 15713  					if aBuf != bp {
 15714  						sqlite3.Xsqlite3_free(tls, aBuf)
 15715  					}
 15716  					nBuf = nBuf * int64(2)
 15717  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 15718  					if aBuf == uintptr(0) {
 15719  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15720  						return SQLITE_NOMEM
 15721  					}
 15722  				}
 15723  
 15724  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 15725  				if aBuf != bp {
 15726  					sqlite3.Xsqlite3_free(tls, aBuf)
 15727  				}
 15728  			} else {
 15729  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15730  			}
 15731  
 15732  		}
 15733  		fallthrough
 15734  	case FSDIR_COLUMN_PATH:
 15735  		fallthrough
 15736  	default:
 15737  		{
 15738  			break
 15739  
 15740  		}
 15741  	}
 15742  	return SQLITE_OK
 15743  }
 15744  
 15745  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15746  	var pCur uintptr = cur
 15747  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 15748  	return SQLITE_OK
 15749  }
 15750  
 15751  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 15752  	var pCur uintptr = cur
 15753  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 15754  }
 15755  
 15756  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15757  	bp := tls.Alloc(32)
 15758  	defer tls.Free(32)
 15759  
 15760  	var zDir uintptr = uintptr(0)
 15761  	var pCur uintptr = cur
 15762  	_ = idxStr
 15763  	fsdirResetCursor(tls, pCur)
 15764  
 15765  	if idxNum == 0 {
 15766  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 15767  		return SQLITE_ERROR
 15768  	}
 15769  
 15770  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15771  	if zDir == uintptr(0) {
 15772  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 15773  		return SQLITE_ERROR
 15774  	}
 15775  	if argc == 2 {
 15776  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 15777  	}
 15778  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 15779  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 15780  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 15781  	} else {
 15782  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 15783  	}
 15784  
 15785  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15786  		return SQLITE_NOMEM
 15787  	}
 15788  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15789  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15790  		return SQLITE_ERROR
 15791  	}
 15792  
 15793  	return SQLITE_OK
 15794  }
 15795  
 15796  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15797  	var i int32
 15798  	var idxPath int32 = -1
 15799  	var idxDir int32 = -1
 15800  	var seenPath int32 = 0
 15801  	var seenDir int32 = 0
 15802  	var pConstraint uintptr
 15803  
 15804  	_ = tab
 15805  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15806  	i = 0
 15807  __1:
 15808  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15809  		goto __3
 15810  	}
 15811  	{
 15812  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 15813  			goto __2
 15814  		}
 15815  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 15816  		case FSDIR_COLUMN_PATH:
 15817  			{
 15818  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15819  					idxPath = i
 15820  					seenPath = 0
 15821  				} else if idxPath < 0 {
 15822  					seenPath = 1
 15823  				}
 15824  				break
 15825  
 15826  			}
 15827  		case FSDIR_COLUMN_DIR:
 15828  			{
 15829  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15830  					idxDir = i
 15831  					seenDir = 0
 15832  				} else if idxDir < 0 {
 15833  					seenDir = 1
 15834  				}
 15835  				break
 15836  
 15837  			}
 15838  		}
 15839  
 15840  	}
 15841  	goto __2
 15842  __2:
 15843  	i++
 15844  	pConstraint += 12
 15845  	goto __1
 15846  	goto __3
 15847  __3:
 15848  	;
 15849  	if seenPath != 0 || seenDir != 0 {
 15850  		return SQLITE_CONSTRAINT
 15851  	}
 15852  
 15853  	if idxPath < 0 {
 15854  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 15855  
 15856  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 15857  	} else {
 15858  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 15859  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 15860  		if idxDir >= 0 {
 15861  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 15862  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 15863  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 15864  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15865  		} else {
 15866  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15867  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 15868  		}
 15869  	}
 15870  
 15871  	return SQLITE_OK
 15872  }
 15873  
 15874  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 15875  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 15876  	return rc
 15877  }
 15878  
 15879  var fsdirModule1 = sqlite3_module{
 15880  	FxConnect:    0,
 15881  	FxBestIndex:  0,
 15882  	FxDisconnect: 0,
 15883  	FxOpen:       0,
 15884  	FxClose:      0,
 15885  	FxFilter:     0,
 15886  	FxNext:       0,
 15887  	FxEof:        0,
 15888  	FxColumn:     0,
 15889  	FxRowid:      0,
 15890  }
 15891  
 15892  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15893  	var rc int32 = SQLITE_OK
 15894  	_ = pApi
 15895  
 15896  	_ = pzErrMsg
 15897  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 15898  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15899  		*(*uintptr)(unsafe.Pointer(&struct {
 15900  			f func(*libc.TLS, uintptr, int32, uintptr)
 15901  		}{readfileFunc})), uintptr(0), uintptr(0))
 15902  	if rc == SQLITE_OK {
 15903  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 15904  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15905  			*(*uintptr)(unsafe.Pointer(&struct {
 15906  				f func(*libc.TLS, uintptr, int32, uintptr)
 15907  			}{writefileFunc})), uintptr(0), uintptr(0))
 15908  	}
 15909  	if rc == SQLITE_OK {
 15910  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 15911  			*(*uintptr)(unsafe.Pointer(&struct {
 15912  				f func(*libc.TLS, uintptr, int32, uintptr)
 15913  			}{lsModeFunc})), uintptr(0), uintptr(0))
 15914  	}
 15915  	if rc == SQLITE_OK {
 15916  		rc = fsdirRegister(tls, db)
 15917  	}
 15918  	return rc
 15919  }
 15920  
 15921  type fuzzer_vtab1 = struct {
 15922  	Fbase        sqlite3_vtab
 15923  	FzClassName  uintptr
 15924  	FpRule       uintptr
 15925  	FnCursor     int32
 15926  	F__ccgo_pad1 [4]byte
 15927  }
 15928  
 15929  type fuzzer_vtab = fuzzer_vtab1
 15930  type fuzzer_cursor1 = struct {
 15931  	Fbase        sqlite3_vtab_cursor
 15932  	FiRowid      sqlite3_int64
 15933  	FpVtab       uintptr
 15934  	FrLimit      fuzzer_cost
 15935  	F__ccgo_pad1 [4]byte
 15936  	FpStem       uintptr
 15937  	FpDone       uintptr
 15938  	FaQueue      [20]uintptr
 15939  	FmxQueue     int32
 15940  	F__ccgo_pad2 [4]byte
 15941  	FzBuf        uintptr
 15942  	FnBuf        int32
 15943  	FnStem       int32
 15944  	FiRuleset    int32
 15945  	F__ccgo_pad3 [4]byte
 15946  	FnullRule    fuzzer_rule
 15947  	FapHash      [4001]uintptr
 15948  }
 15949  
 15950  type fuzzer_cursor = fuzzer_cursor1
 15951  type fuzzer_rule1 = struct {
 15952  	FpNext       uintptr
 15953  	FzFrom       uintptr
 15954  	FrCost       fuzzer_cost
 15955  	FnFrom       fuzzer_len
 15956  	FnTo         fuzzer_len
 15957  	F__ccgo_pad1 [2]byte
 15958  	FiRuleset    fuzzer_ruleid
 15959  	FzTo         [4]uint8
 15960  }
 15961  
 15962  type fuzzer_rule = fuzzer_rule1
 15963  type fuzzer_stem1 = struct {
 15964  	FzBasis      uintptr
 15965  	FpRule       uintptr
 15966  	FpNext       uintptr
 15967  	FpHash       uintptr
 15968  	FrBaseCost   fuzzer_cost
 15969  	FrCostX      fuzzer_cost
 15970  	FnBasis      fuzzer_len
 15971  	Fn           fuzzer_len
 15972  	F__ccgo_pad1 [6]byte
 15973  }
 15974  
 15975  type fuzzer_stem = fuzzer_stem1
 15976  
 15977  type fuzzer_cost = int32
 15978  type fuzzer_len = int8
 15979  type fuzzer_ruleid = int32
 15980  
 15981  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15982  	bp := tls.Alloc(32)
 15983  	defer tls.Free(32)
 15984  
 15985  	var pTail uintptr
 15986  
 15987  	pTail = bp
 15988  	for pA != 0 && pB != 0 {
 15989  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 15990  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15991  			pTail = pA
 15992  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 15993  		} else {
 15994  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15995  			pTail = pB
 15996  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 15997  		}
 15998  	}
 15999  	if pA == uintptr(0) {
 16000  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 16001  	} else {
 16002  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 16003  	}
 16004  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 16005  }
 16006  
 16007  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 16008  	bp := tls.Alloc(48)
 16009  	defer tls.Free(48)
 16010  
 16011  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 16012  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 16013  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 16014  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 16015  
 16016  	var rc int32 = SQLITE_OK
 16017  	var nFrom int32
 16018  	var nTo int32
 16019  	var pRule uintptr = uintptr(0)
 16020  
 16021  	if zFrom == uintptr(0) {
 16022  		zFrom = ts + 584
 16023  	}
 16024  	if zTo == uintptr(0) {
 16025  		zTo = ts + 584
 16026  	}
 16027  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 16028  	nTo = int32(libc.Xstrlen(tls, zTo))
 16029  
 16030  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 16031  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 16032  		return SQLITE_OK
 16033  	}
 16034  
 16035  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 16036  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 16037  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 16038  		rc = SQLITE_ERROR
 16039  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 16040  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 16041  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 16042  		rc = SQLITE_ERROR
 16043  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 16044  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 16045  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 16046  		rc = SQLITE_ERROR
 16047  	} else {
 16048  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_rule{}))+uint64(nFrom)+uint64(nTo))
 16049  		if pRule == uintptr(0) {
 16050  			rc = SQLITE_NOMEM
 16051  		} else {
 16052  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(fuzzer_rule{})))
 16053  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 28
 16054  			*(*uintptr)(unsafe.Pointer(pRule + 8)) += uintptr(nTo + 1)
 16055  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 16056  			libc.Xmemcpy(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 16057  			libc.Xmemcpy(tls, pRule+28, zTo, uint64(nTo+1))
 16058  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 16059  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 16060  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 16061  		}
 16062  	}
 16063  
 16064  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 16065  	return rc
 16066  }
 16067  
 16068  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 16069  	bp := tls.Alloc(192)
 16070  	defer tls.Free(192)
 16071  
 16072  	var rc int32 = SQLITE_OK
 16073  	var zSql uintptr
 16074  	var pHead uintptr = uintptr(0)
 16075  
 16076  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 16077  	if zSql == uintptr(0) {
 16078  		rc = SQLITE_NOMEM
 16079  	} else {
 16080  		var rc2 int32
 16081  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 16082  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 16083  		if rc != SQLITE_OK {
 16084  			*(*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)))
 16085  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 16086  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 16087  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 16088  			rc = SQLITE_ERROR
 16089  		} else {
 16090  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 16091  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16092  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 16093  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 16094  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 16095  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 16096  				}
 16097  			}
 16098  		}
 16099  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 16100  		if rc == SQLITE_OK {
 16101  			rc = rc2
 16102  		}
 16103  	}
 16104  	sqlite3.Xsqlite3_free(tls, zSql)
 16105  
 16106  	if rc == SQLITE_OK {
 16107  		var i uint32
 16108  		var pX uintptr
 16109  
 16110  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 16111  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 16112  		}
 16113  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 16114  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 16115  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 16116  			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++ {
 16117  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 16118  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 16119  			}
 16120  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 16121  		}
 16122  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 16123  		i = uint32(1)
 16124  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 16125  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 16126  		}
 16127  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 16128  	} else {
 16129  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 16130  	}
 16131  
 16132  	return rc
 16133  }
 16134  
 16135  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 16136  	var nIn sqlite3_int64
 16137  	var zOut uintptr
 16138  
 16139  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 16140  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 16141  	if zOut != 0 {
 16142  		var q uint8 = *(*uint8)(unsafe.Pointer(zIn))
 16143  
 16144  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 16145  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 16146  		} else {
 16147  			var iOut int32 = 0
 16148  			var iIn int32
 16149  
 16150  			if int32(q) == '[' {
 16151  				q = uint8(']')
 16152  			}
 16153  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 16154  				if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 16155  					iIn++
 16156  				}
 16157  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(zIn + uintptr(iIn)))
 16158  			}
 16159  		}
 16160  
 16161  	}
 16162  	return zOut
 16163  }
 16164  
 16165  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 16166  	var p uintptr = pVtab
 16167  
 16168  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 16169  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 16170  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16171  		sqlite3.Xsqlite3_free(tls, pRule)
 16172  	}
 16173  	sqlite3.Xsqlite3_free(tls, p)
 16174  	return SQLITE_OK
 16175  }
 16176  
 16177  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 16178  	bp := tls.Alloc(8)
 16179  	defer tls.Free(8)
 16180  
 16181  	var rc int32 = SQLITE_OK
 16182  	var pNew uintptr = uintptr(0)
 16183  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 16184  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 16185  
 16186  	if argc != 4 {
 16187  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 16188  			ts+5394, libc.VaList(bp, zModule))
 16189  		rc = SQLITE_ERROR
 16190  	} else {
 16191  		var nModule sqlite3_int64
 16192  
 16193  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 16194  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_vtab{}))+uint64(nModule)+uint64(1))
 16195  		if pNew == uintptr(0) {
 16196  			rc = SQLITE_NOMEM
 16197  		} else {
 16198  			var zTab uintptr
 16199  
 16200  			libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_vtab{})))
 16201  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*48
 16202  			libc.Xmemcpy(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)))
 16203  
 16204  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 16205  			if zTab == uintptr(0) {
 16206  				rc = SQLITE_NOMEM
 16207  			} else {
 16208  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 16209  				sqlite3.Xsqlite3_free(tls, zTab)
 16210  			}
 16211  
 16212  			if rc == SQLITE_OK {
 16213  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 16214  			}
 16215  			if rc != SQLITE_OK {
 16216  				fuzzerDisconnect(tls, pNew)
 16217  				pNew = uintptr(0)
 16218  			} else {
 16219  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 16220  			}
 16221  		}
 16222  	}
 16223  
 16224  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 16225  	return rc
 16226  }
 16227  
 16228  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 16229  	var p uintptr = pVTab
 16230  	var pCur uintptr
 16231  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 16232  	if pCur == uintptr(0) {
 16233  		return SQLITE_NOMEM
 16234  	}
 16235  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fuzzer_cursor{})))
 16236  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 16237  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 16238  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 16239  	return SQLITE_OK
 16240  }
 16241  
 16242  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 16243  	for pStem != 0 {
 16244  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 16245  		sqlite3.Xsqlite3_free(tls, pStem)
 16246  		pStem = pNext
 16247  	}
 16248  }
 16249  
 16250  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 16251  	var i int32
 16252  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16253  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 16254  	for i = 0; i < FUZZER_NQUEUE; i++ {
 16255  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 16256  	}
 16257  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16258  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 16259  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 16260  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16261  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 16262  		libc.Xmemset(tls, pCur+48, 0, uint64(unsafe.Sizeof([20]uintptr{})))
 16263  		libc.Xmemset(tls, pCur+272, 0, uint64(unsafe.Sizeof([4001]uintptr{})))
 16264  	}
 16265  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 16266  }
 16267  
 16268  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 16269  	var pCur uintptr = cur
 16270  	fuzzerClearCursor(tls, pCur, 0)
 16271  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16272  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 16273  	sqlite3.Xsqlite3_free(tls, pCur)
 16274  	return SQLITE_OK
 16275  }
 16276  
 16277  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 16278  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 16279  	var n int32
 16280  	var z uintptr
 16281  
 16282  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 16283  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 16284  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 16285  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 16286  			return SQLITE_NOMEM
 16287  		}
 16288  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 16289  	}
 16290  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 16291  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 16292  	if n < 0 {
 16293  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1))
 16294  	} else {
 16295  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(n))
 16296  		libc.Xmemcpy(tls, z+uintptr(n), pRule+28, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo))
 16297  		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)),
 16298  			uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1))
 16299  	}
 16300  
 16301  	return SQLITE_OK
 16302  }
 16303  
 16304  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 16305  	var h uint32 = uint32(0)
 16306  	for *(*uint8)(unsafe.Pointer(z)) != 0 {
 16307  		h = h<<3 ^ h>>29 ^ uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 16308  	}
 16309  	return h % uint32(FUZZER_HASH)
 16310  }
 16311  
 16312  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 16313  	return libc.AssignPtrInt32(pStem+36, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 16314  }
 16315  
 16316  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16317  	var h uint32
 16318  	var pLookup uintptr
 16319  
 16320  	if fuzzerRender(tls, pStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 16321  		return -1
 16322  	}
 16323  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16324  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 16325  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 16326  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 16327  	}
 16328  	return libc.Bool32(pLookup != uintptr(0))
 16329  }
 16330  
 16331  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 16332  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 16333  		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))
 16334  }
 16335  
 16336  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16337  	var pRule uintptr
 16338  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 16339  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 16340  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 16341  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 16342  				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 {
 16343  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 16344  				if rc < 0 {
 16345  					return -1
 16346  				}
 16347  				if rc == 0 {
 16348  					fuzzerCost(tls, pStem)
 16349  					return 1
 16350  				}
 16351  			}
 16352  		}
 16353  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 16354  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16355  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16356  		}
 16357  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 16358  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 16359  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 16360  		}
 16361  	}
 16362  	return 0
 16363  }
 16364  
 16365  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 16366  	bp := tls.Alloc(48)
 16367  	defer tls.Free(48)
 16368  
 16369  	var pTail uintptr
 16370  
 16371  	pTail = bp
 16372  	for pA != 0 && pB != 0 {
 16373  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 16374  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16375  			pTail = pA
 16376  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 16377  		} else {
 16378  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16379  			pTail = pB
 16380  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 16381  		}
 16382  	}
 16383  	if pA == uintptr(0) {
 16384  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16385  	} else {
 16386  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16387  	}
 16388  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 16389  }
 16390  
 16391  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 16392  	var pBest uintptr
 16393  	var pX uintptr
 16394  	var iBest int32
 16395  	var i int32
 16396  
 16397  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 16398  		iBest = -1
 16399  		pBest = uintptr(0)
 16400  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16401  			pX = *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8))
 16402  			if pX == uintptr(0) {
 16403  				continue
 16404  			}
 16405  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 16406  				pBest = pX
 16407  				iBest = i
 16408  			}
 16409  		}
 16410  		if pBest != 0 {
 16411  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(iBest)*8)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 16412  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 16413  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 16414  		}
 16415  	}
 16416  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16417  }
 16418  
 16419  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 16420  	var pX uintptr
 16421  	var i int32
 16422  
 16423  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 16424  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16425  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 16426  		pNew = pX
 16427  	}
 16428  
 16429  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16430  	pX = pNew
 16431  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16432  		if *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) != 0 {
 16433  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 16434  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = uintptr(0)
 16435  		} else {
 16436  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 16437  			break
 16438  		}
 16439  	}
 16440  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 16441  		if i < FUZZER_NQUEUE {
 16442  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 16443  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 16444  		} else {
 16445  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)))
 16446  			*(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)) = pX
 16447  		}
 16448  	}
 16449  
 16450  	return fuzzerLowestCostStem(tls, pCur)
 16451  }
 16452  
 16453  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 16454  	var pNew uintptr
 16455  	var pRule uintptr
 16456  	var h uint32
 16457  
 16458  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint64(1))
 16459  	if pNew == uintptr(0) {
 16460  		return uintptr(0)
 16461  	}
 16462  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_stem{})))
 16463  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*48
 16464  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 16465  	libc.Xmemcpy(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1))
 16466  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16467  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16468  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16469  	}
 16470  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 16471  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 16472  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+36, rBaseCost)
 16473  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 16474  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 16475  	*(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8)) = pNew
 16476  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 16477  	return pNew
 16478  }
 16479  
 16480  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 16481  	var pCur uintptr = cur
 16482  	var rc int32
 16483  	var pStem uintptr
 16484  	var pNew uintptr
 16485  
 16486  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 16487  
 16488  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16489  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 16490  		rc = fuzzerRender(tls, pStem, pCur+216, pCur+224)
 16491  		if rc == SQLITE_NOMEM {
 16492  			return SQLITE_NOMEM
 16493  		}
 16494  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 16495  		if pNew != 0 {
 16496  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 16497  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16498  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 16499  			} else {
 16500  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 16501  					return SQLITE_OK
 16502  				}
 16503  			}
 16504  		} else {
 16505  			return SQLITE_NOMEM
 16506  		}
 16507  	}
 16508  
 16509  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 16510  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 16511  		if res < 0 {
 16512  			return SQLITE_NOMEM
 16513  		} else if res > 0 {
 16514  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16515  			pStem = fuzzerInsert(tls, pCur, pStem)
 16516  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 16517  				if rc < 0 {
 16518  					return SQLITE_NOMEM
 16519  				}
 16520  				continue
 16521  			}
 16522  			return SQLITE_OK
 16523  		}
 16524  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16525  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16526  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 16527  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 16528  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16529  			if rc < 0 {
 16530  				return SQLITE_NOMEM
 16531  			}
 16532  			if rc == 0 {
 16533  				return SQLITE_OK
 16534  			}
 16535  		}
 16536  	}
 16537  
 16538  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16539  	return SQLITE_OK
 16540  }
 16541  
 16542  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 16543  	var pCur uintptr = pVtabCursor
 16544  	var zWord uintptr = ts + 584
 16545  	var pStem uintptr
 16546  	var idx int32
 16547  
 16548  	fuzzerClearCursor(tls, pCur, 1)
 16549  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 16550  	idx = 0
 16551  	if idxNum&1 != 0 {
 16552  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16553  		idx++
 16554  	}
 16555  	if idxNum&2 != 0 {
 16556  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 16557  		idx++
 16558  	}
 16559  	if idxNum&4 != 0 {
 16560  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 16561  		idx++
 16562  	}
 16563  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16564  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 16565  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 16566  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 16567  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 16568  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 16569  
 16570  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 16571  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 16572  		if pStem == uintptr(0) {
 16573  			return SQLITE_NOMEM
 16574  		}
 16575  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 240
 16576  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 16577  	} else {
 16578  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16579  	}
 16580  
 16581  	return SQLITE_OK
 16582  }
 16583  
 16584  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 16585  	var pCur uintptr = cur
 16586  	if i == 0 {
 16587  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 16588  			return SQLITE_NOMEM
 16589  		}
 16590  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 16591  	} else if i == 1 {
 16592  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 16593  	} else {
 16594  		sqlite3.Xsqlite3_result_null(tls, ctx)
 16595  	}
 16596  	return SQLITE_OK
 16597  }
 16598  
 16599  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 16600  	var pCur uintptr = cur
 16601  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 16602  	return SQLITE_OK
 16603  }
 16604  
 16605  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 16606  	var pCur uintptr = cur
 16607  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 16608  }
 16609  
 16610  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 16611  	var iPlan int32 = 0
 16612  	var iDistTerm int32 = -1
 16613  	var iRulesetTerm int32 = -1
 16614  	var i int32
 16615  	var seenMatch int32 = 0
 16616  	var pConstraint uintptr
 16617  	var rCost float64 = 1e12
 16618  
 16619  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 16620  	i = 0
 16621  __1:
 16622  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 16623  		goto __3
 16624  	}
 16625  	{
 16626  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16627  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16628  			seenMatch = 1
 16629  		}
 16630  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 16631  			goto __2
 16632  		}
 16633  		if iPlan&1 == 0 &&
 16634  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16635  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16636  			iPlan = iPlan | 1
 16637  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 16638  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16639  			rCost = rCost / 1e6
 16640  		}
 16641  		if iPlan&2 == 0 &&
 16642  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 16643  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 16644  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 16645  			iPlan = iPlan | 2
 16646  			iDistTerm = i
 16647  			rCost = rCost / 10.0
 16648  		}
 16649  		if iPlan&4 == 0 &&
 16650  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 16651  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 16652  			iPlan = iPlan | 4
 16653  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16654  			iRulesetTerm = i
 16655  			rCost = rCost / 10.0
 16656  		}
 16657  
 16658  	}
 16659  	goto __2
 16660  __2:
 16661  	i++
 16662  	pConstraint += 12
 16663  	goto __1
 16664  	goto __3
 16665  __3:
 16666  	;
 16667  	if iPlan&2 != 0 {
 16668  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 16669  	}
 16670  	if iPlan&4 != 0 {
 16671  		var idx int32 = 1
 16672  		if iPlan&1 != 0 {
 16673  			idx++
 16674  		}
 16675  		if iPlan&2 != 0 {
 16676  			idx++
 16677  		}
 16678  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 16679  	}
 16680  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 16681  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 16682  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 16683  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 16684  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 16685  	}
 16686  	if seenMatch != 0 && iPlan&1 == 0 {
 16687  		rCost = 1e99
 16688  	}
 16689  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 16690  
 16691  	return SQLITE_OK
 16692  }
 16693  
 16694  var fuzzerModule = sqlite3_module{
 16695  	FxCreate:     0,
 16696  	FxConnect:    0,
 16697  	FxBestIndex:  0,
 16698  	FxDisconnect: 0,
 16699  	FxDestroy:    0,
 16700  	FxOpen:       0,
 16701  	FxClose:      0,
 16702  	FxFilter:     0,
 16703  	FxNext:       0,
 16704  	FxEof:        0,
 16705  	FxColumn:     0,
 16706  	FxRowid:      0,
 16707  }
 16708  
 16709  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16710  	var rc int32 = SQLITE_OK
 16711  	_ = pApi
 16712  
 16713  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 16714  	return rc
 16715  }
 16716  
 16717  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16718  	bp := tls.Alloc(160)
 16719  	defer tls.Free(160)
 16720  
 16721  	if argc == 1 {
 16722  		var m sqlite3_int64
 16723  
 16724  		var e int32
 16725  		var isNeg int32
 16726  
 16727  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16728  			uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16729  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16730  			var i uint32
 16731  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 16732  			for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16733  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16734  			}
 16735  			libc.Xmemcpy(tls, bp+16, bp+24, uint64(unsafe.Sizeof(float64(0))))
 16736  		} else {
 16737  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16738  		}
 16739  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 16740  			isNeg = 1
 16741  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 16742  		} else {
 16743  			isNeg = 0
 16744  		}
 16745  		libc.Xmemcpy(tls, bp+32, bp+16, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 16746  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 16747  			e = 0
 16748  			m = int64(0)
 16749  		} else {
 16750  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 16751  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 16752  			if e == 0 {
 16753  				m <<= 1
 16754  			} else {
 16755  				m = m | int64(1)<<52
 16756  			}
 16757  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 16758  				m >>= 1
 16759  				e++
 16760  			}
 16761  			if isNeg != 0 {
 16762  				m = -m
 16763  			}
 16764  		}
 16765  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 16766  		case 0:
 16767  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+40, ts+5490,
 16768  				libc.VaList(bp, m, e-1075))
 16769  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 16770  			break
 16771  			fallthrough
 16772  		case 1:
 16773  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 16774  			break
 16775  			fallthrough
 16776  		case 2:
 16777  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 16778  			break
 16779  		}
 16780  	} else {
 16781  		var m sqlite3_int64
 16782  		var e sqlite3_int64
 16783  
 16784  		var isNeg int32 = 0
 16785  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16786  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16787  
 16788  		if e > int64(10000) {
 16789  			e = int64(10000)
 16790  		} else if e < int64(-10000) {
 16791  			e = int64(-10000)
 16792  		}
 16793  
 16794  		if m < int64(0) {
 16795  			isNeg = 1
 16796  			m = -m
 16797  			if m < int64(0) {
 16798  				return
 16799  			}
 16800  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 16801  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 16802  			return
 16803  		}
 16804  		for m>>32&int64(0xffe00000) != 0 {
 16805  			m >>= 1
 16806  			e++
 16807  		}
 16808  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 16809  			m <<= 1
 16810  			e--
 16811  		}
 16812  		e = e + int64(1075)
 16813  		if e <= int64(0) {
 16814  			if int64(1)-e >= int64(64) {
 16815  				m = int64(0)
 16816  			} else {
 16817  				m >>= int64(1) - e
 16818  			}
 16819  			e = int64(0)
 16820  		} else if e > int64(0x7ff) {
 16821  			e = int64(0x7ff)
 16822  		}
 16823  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) = m & (int64(1)<<52 - int64(1))
 16824  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= e << 52
 16825  		if isNeg != 0 {
 16826  			*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= libc.Int64FromUint64(uint64(1) << 63)
 16827  		}
 16828  		libc.Xmemcpy(tls, bp+144, bp+152, uint64(unsafe.Sizeof(float64(0))))
 16829  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 144)))
 16830  	}
 16831  }
 16832  
 16833  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16834  	bp := tls.Alloc(16)
 16835  	defer tls.Free(16)
 16836  
 16837  	_ = argc
 16838  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16839  		uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16840  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16841  		var i uint32
 16842  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 16843  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16844  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16845  		}
 16846  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16847  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 16848  	}
 16849  }
 16850  
 16851  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16852  	bp := tls.Alloc(24)
 16853  	defer tls.Free(24)
 16854  
 16855  	_ = argc
 16856  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 16857  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 16858  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16859  
 16860  		var i uint32
 16861  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16862  		for i = uint32(1); uint64(i) <= uint64(unsafe.Sizeof(float64(0))); i++ {
 16863  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(i)))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 16864  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 16865  		}
 16866  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 16867  	}
 16868  }
 16869  
 16870  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16871  	var i uint32
 16872  	var rc int32 = SQLITE_OK
 16873  	_ = pApi
 16874  
 16875  	_ = pzErrMsg
 16876  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc1))/uint64(unsafe.Sizeof(struct {
 16877  		FzFName uintptr
 16878  		FnArg   int32
 16879  		FiAux   int32
 16880  		FxFunc  uintptr
 16881  	}{})) && rc == SQLITE_OK; i++ {
 16882  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 16883  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 16884  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*24+12,
 16885  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 16886  	}
 16887  	return rc
 16888  }
 16889  
 16890  var aFunc1 = [6]struct {
 16891  	FzFName uintptr
 16892  	FnArg   int32
 16893  	FiAux   int32
 16894  	FxFunc  uintptr
 16895  }{
 16896  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 16897  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 16898  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 16899  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 16900  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 16901  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 16902  }
 16903  
 16904  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 16905  	bp := tls.Alloc(88)
 16906  	defer tls.Free(88)
 16907  
 16908  	var rc int32 = SQLITE_OK
 16909  	var zSql uintptr = uintptr(0)
 16910  	var pgsz int32 = 0
 16911  	var nTotal int32 = 0
 16912  
 16913  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 16914  		return SQLITE_MISUSE
 16915  	}
 16916  
 16917  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 16918  		libc.VaList(bp, func() uintptr {
 16919  			if zDb != 0 {
 16920  				return ts + 5624
 16921  			}
 16922  			return ts + 584
 16923  		}(), func() uintptr {
 16924  			if zDb != 0 {
 16925  				return zDb
 16926  			}
 16927  			return ts + 584
 16928  		}(), func() uintptr {
 16929  			if zDb != 0 {
 16930  				return ts + 5626
 16931  			}
 16932  			return ts + 584
 16933  		}()))
 16934  	if zSql == uintptr(0) {
 16935  		return SQLITE_NOMEM
 16936  	}
 16937  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 16938  	sqlite3.Xsqlite3_free(tls, zSql)
 16939  
 16940  	if rc == SQLITE_OK {
 16941  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 16942  			libc.VaList(bp+24, func() uintptr {
 16943  				if zDb != 0 {
 16944  					return ts + 5624
 16945  				}
 16946  				return ts + 584
 16947  			}(), func() uintptr {
 16948  				if zDb != 0 {
 16949  					return zDb
 16950  				}
 16951  				return ts + 584
 16952  			}(), func() uintptr {
 16953  				if zDb != 0 {
 16954  					return ts + 5626
 16955  				}
 16956  				return ts + 584
 16957  			}()))
 16958  		if zSql == uintptr(0) {
 16959  			rc = SQLITE_NOMEM
 16960  		} else {
 16961  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16962  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 16963  			sqlite3.Xsqlite3_free(tls, zSql)
 16964  			if rc == SQLITE_OK {
 16965  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 16966  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 16967  				}
 16968  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 16969  			}
 16970  			if rc == SQLITE_OK && pgsz == 0 {
 16971  				rc = SQLITE_ERROR
 16972  			}
 16973  		}
 16974  	}
 16975  
 16976  	if rc == SQLITE_OK {
 16977  		var rc2 int32
 16978  		*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 16979  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+72)
 16980  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods)).FiVersion >= 3 {
 16981  			var iPg sqlite3_int64 = int64(1)
 16982  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods
 16983  			for 1 != 0 {
 16984  				rc = (*struct {
 16985  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 16986  				})(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)
 16987  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 16988  					break
 16989  				}
 16990  
 16991  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))))
 16992  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(pgsz-1))))
 16993  
 16994  				rc = (*struct {
 16995  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 16996  				})(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)))
 16997  				if rc != SQLITE_OK {
 16998  					break
 16999  				}
 17000  				iPg++
 17001  			}
 17002  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 17003  				ts+5652, libc.VaList(bp+48, func() int64 {
 17004  					if iPg == int64(1) {
 17005  						return int64(0)
 17006  					}
 17007  					return iPg
 17008  				}(),
 17009  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 17010  		}
 17011  
 17012  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 17013  		if rc == SQLITE_OK {
 17014  			rc = rc2
 17015  		}
 17016  	}
 17017  
 17018  	return rc
 17019  }
 17020  
 17021  type nextCharContext1 = struct {
 17022  	Fdb           uintptr
 17023  	FpStmt        uintptr
 17024  	FzPrefix      uintptr
 17025  	FnPrefix      int32
 17026  	FnAlloc       int32
 17027  	FnUsed        int32
 17028  	F__ccgo_pad1  [4]byte
 17029  	FaResult      uintptr
 17030  	FmallocFailed int32
 17031  	FotherError   int32
 17032  }
 17033  
 17034  type nextCharContext = nextCharContext1
 17035  
 17036  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 17037  	var i int32
 17038  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 17039  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 17040  			return
 17041  		}
 17042  	}
 17043  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 17044  		var aNew uintptr
 17045  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 17046  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(n)*uint64(unsafe.Sizeof(uint32(0))))
 17047  		if aNew == uintptr(0) {
 17048  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 17049  			return
 17050  		} else {
 17051  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 17052  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 17053  		}
 17054  	}
 17055  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 17056  }
 17057  
 17058  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 17059  	if c < uint32(0x00080) {
 17060  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 17061  		return 1
 17062  	}
 17063  	if c < uint32(0x00800) {
 17064  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 17065  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 17066  		return 2
 17067  	}
 17068  	if c < uint32(0x10000) {
 17069  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 17070  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 17071  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 17072  		return 3
 17073  	}
 17074  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 17075  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 17076  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 17077  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 17078  	return 4
 17079  }
 17080  
 17081  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 17082  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 17083  	if c < uint32(0xc0) {
 17084  		*(*uint32)(unsafe.Pointer(pOut)) = c
 17085  		return 1
 17086  	} else {
 17087  		var n int32 = 1
 17088  		c = uint32(validBits[c-uint32(0xc0)])
 17089  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 17090  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 17091  		}
 17092  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 17093  			c = uint32(0xFFFD)
 17094  		}
 17095  		*(*uint32)(unsafe.Pointer(pOut)) = c
 17096  		return n
 17097  	}
 17098  	return int32(0)
 17099  }
 17100  
 17101  var validBits = [64]uint8{
 17102  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17103  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 17104  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 17105  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 17106  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17107  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 17108  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17109  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 17110  }
 17111  
 17112  func findNextChars(tls *libc.TLS, p uintptr) {
 17113  	bp := tls.Alloc(12)
 17114  	defer tls.Free(12)
 17115  
 17116  	var cPrev uint32 = uint32(0)
 17117  
 17118  	var n int32
 17119  	var rc int32
 17120  
 17121  	for {
 17122  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 17123  			uintptr(0))
 17124  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 17125  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 17126  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17127  		if rc == SQLITE_DONE {
 17128  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17129  			return
 17130  		} else if rc != SQLITE_ROW {
 17131  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 17132  			return
 17133  		} else {
 17134  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 17135  
 17136  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 17137  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17138  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 17139  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 17140  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 17141  				return
 17142  			}
 17143  		}
 17144  	}
 17145  }
 17146  
 17147  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17148  	bp := tls.Alloc(136)
 17149  	defer tls.Free(136)
 17150  
 17151  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17152  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 17153  	var zWhere uintptr
 17154  	var zCollName uintptr
 17155  	var zWhereClause uintptr = uintptr(0)
 17156  	var zColl uintptr = uintptr(0)
 17157  	var zSql uintptr
 17158  	var rc int32
 17159  
 17160  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(nextCharContext{})))
 17161  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 17162  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17163  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17164  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 17165  		return
 17166  	}
 17167  	if argc >= 4 &&
 17168  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))) != uintptr(0) &&
 17169  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 17170  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 17171  		if zWhereClause == uintptr(0) {
 17172  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17173  			return
 17174  		}
 17175  	} else {
 17176  		zWhereClause = ts + 584
 17177  	}
 17178  	if argc >= 5 &&
 17179  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))) != uintptr(0) &&
 17180  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 17181  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 17182  		if zColl == uintptr(0) {
 17183  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17184  			if *(*uint8)(unsafe.Pointer(zWhereClause)) != 0 {
 17185  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 17186  			}
 17187  			return
 17188  		}
 17189  	} else {
 17190  		zColl = ts + 584
 17191  	}
 17192  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 17193  		ts+5728,
 17194  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 17195  	if *(*uint8)(unsafe.Pointer(zWhereClause)) != 0 {
 17196  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 17197  	}
 17198  	if *(*uint8)(unsafe.Pointer(zColl)) != 0 {
 17199  		sqlite3.Xsqlite3_free(tls, zColl)
 17200  	}
 17201  	if zSql == uintptr(0) {
 17202  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17203  		return
 17204  	}
 17205  
 17206  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+8, uintptr(0))
 17207  	sqlite3.Xsqlite3_free(tls, zSql)
 17208  	if rc != 0 {
 17209  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 17210  		return
 17211  	}
 17212  	findNextChars(tls, bp+80)
 17213  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 17214  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17215  	} else {
 17216  		var pRes uintptr
 17217  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 17218  		if pRes == uintptr(0) {
 17219  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17220  		} else {
 17221  			var i int32
 17222  			var n int32 = 0
 17223  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 17224  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 17225  			}
 17226  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 17227  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 17228  		}
 17229  	}
 17230  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 17231  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 17232  }
 17233  
 17234  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17235  	var rc int32 = SQLITE_OK
 17236  	_ = pApi
 17237  
 17238  	_ = pzErrMsg
 17239  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 17240  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17241  		*(*uintptr)(unsafe.Pointer(&struct {
 17242  			f func(*libc.TLS, uintptr, int32, uintptr)
 17243  		}{nextCharFunc})), uintptr(0), uintptr(0))
 17244  	if rc == SQLITE_OK {
 17245  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 17246  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17247  			*(*uintptr)(unsafe.Pointer(&struct {
 17248  				f func(*libc.TLS, uintptr, int32, uintptr)
 17249  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17250  	}
 17251  	if rc == SQLITE_OK {
 17252  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 17253  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17254  			*(*uintptr)(unsafe.Pointer(&struct {
 17255  				f func(*libc.TLS, uintptr, int32, uintptr)
 17256  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17257  	}
 17258  	return rc
 17259  }
 17260  
 17261  var aiClass = [256]uint8{
 17262  	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),
 17263  	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),
 17264  	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),
 17265  	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),
 17266  	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),
 17267  	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),
 17268  	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),
 17269  	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),
 17270  	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),
 17271  	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),
 17272  	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),
 17273  	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),
 17274  	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),
 17275  	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),
 17276  	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),
 17277  	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),
 17278  }
 17279  
 17280  var sqlite3UpperToLower = [256]uint8{
 17281  	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),
 17282  	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),
 17283  	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),
 17284  	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),
 17285  	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),
 17286  	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),
 17287  	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),
 17288  	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),
 17289  	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),
 17290  	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),
 17291  	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),
 17292  	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),
 17293  	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),
 17294  	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),
 17295  	uint8(252), uint8(253), uint8(254), uint8(255),
 17296  }
 17297  
 17298  var sqlite3CtypeMap = [256]uint8{
 17299  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17300  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 17301  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17302  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17303  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 17304  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17305  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 17306  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17307  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 17308  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17309  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17310  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 17311  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 17312  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17313  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17314  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17315  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17316  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17317  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17318  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17319  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17320  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17321  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17322  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17323  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17324  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17325  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17326  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17327  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17328  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17329  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17330  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17331  }
 17332  
 17333  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 17334  	var i int32
 17335  	var c int32
 17336  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 17337  	case CC_SPACE:
 17338  		{
 17339  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 17340  			}
 17341  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17342  			return i
 17343  
 17344  		}
 17345  	case CC_MINUS:
 17346  		{
 17347  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 17348  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 17349  				}
 17350  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17351  				return i
 17352  			}
 17353  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17354  			return 1
 17355  
 17356  		}
 17357  	case CC_LP:
 17358  		{
 17359  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17360  			return 1
 17361  
 17362  		}
 17363  	case CC_RP:
 17364  		{
 17365  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17366  			return 1
 17367  
 17368  		}
 17369  	case CC_SEMI:
 17370  		{
 17371  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17372  			return 1
 17373  
 17374  		}
 17375  	case CC_PLUS:
 17376  		{
 17377  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17378  			return 1
 17379  
 17380  		}
 17381  	case CC_STAR:
 17382  		{
 17383  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17384  			return 1
 17385  
 17386  		}
 17387  	case CC_SLASH:
 17388  		{
 17389  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 17390  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17391  				return 1
 17392  			}
 17393  			i = 3
 17394  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 17395  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17396  			}
 17397  			if c != 0 {
 17398  				i++
 17399  			}
 17400  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17401  			return i
 17402  
 17403  		}
 17404  	case CC_PERCENT:
 17405  		{
 17406  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17407  			return 1
 17408  
 17409  		}
 17410  	case CC_EQ:
 17411  		{
 17412  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17413  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 17414  
 17415  		}
 17416  	case CC_LT:
 17417  		{
 17418  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17419  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17420  				return 2
 17421  			} else if c == '>' {
 17422  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17423  				return 2
 17424  			} else if c == '<' {
 17425  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17426  				return 2
 17427  			} else {
 17428  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17429  				return 1
 17430  			}
 17431  
 17432  		}
 17433  		fallthrough
 17434  	case CC_GT:
 17435  		{
 17436  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17437  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17438  				return 2
 17439  			} else if c == '>' {
 17440  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17441  				return 2
 17442  			} else {
 17443  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17444  				return 1
 17445  			}
 17446  
 17447  		}
 17448  		fallthrough
 17449  	case CC_BANG:
 17450  		{
 17451  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 17452  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17453  				return 1
 17454  			} else {
 17455  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17456  				return 2
 17457  			}
 17458  
 17459  		}
 17460  		fallthrough
 17461  	case CC_PIPE:
 17462  		{
 17463  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 17464  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17465  				return 1
 17466  			} else {
 17467  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17468  				return 2
 17469  			}
 17470  
 17471  		}
 17472  		fallthrough
 17473  	case CC_COMMA:
 17474  		{
 17475  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17476  			return 1
 17477  
 17478  		}
 17479  	case CC_AND:
 17480  		{
 17481  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17482  			return 1
 17483  
 17484  		}
 17485  	case CC_TILDA:
 17486  		{
 17487  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17488  			return 1
 17489  
 17490  		}
 17491  	case CC_QUOTE:
 17492  		{
 17493  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 17494  
 17495  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17496  				if c == delim {
 17497  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 17498  						i++
 17499  					} else {
 17500  						break
 17501  					}
 17502  				}
 17503  			}
 17504  			if c == '\'' {
 17505  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17506  				return i + 1
 17507  			} else if c != 0 {
 17508  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17509  				return i + 1
 17510  			} else {
 17511  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17512  				return i
 17513  			}
 17514  
 17515  		}
 17516  		fallthrough
 17517  	case CC_DOT:
 17518  		{
 17519  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 17520  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17521  				return 1
 17522  			}
 17523  
 17524  		}
 17525  		fallthrough
 17526  	case CC_DIGIT:
 17527  		{
 17528  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17529  			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 {
 17530  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17531  				}
 17532  				return i
 17533  			}
 17534  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17535  			}
 17536  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 17537  				i++
 17538  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17539  					i++
 17540  				}
 17541  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17542  			}
 17543  			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 ||
 17544  				(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) {
 17545  				i = i + 2
 17546  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17547  					i++
 17548  				}
 17549  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17550  			}
 17551  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17552  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17553  				i++
 17554  			}
 17555  			return i
 17556  
 17557  		}
 17558  	case CC_QUOTE2:
 17559  		{
 17560  			i = 1
 17561  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 17562  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17563  			}
 17564  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 17565  				if c == ']' {
 17566  					return TK_NAME
 17567  				}
 17568  				return TK_ERROR
 17569  			}()
 17570  			return i
 17571  
 17572  		}
 17573  	case CC_VARNUM:
 17574  		{
 17575  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17576  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17577  			}
 17578  			return i
 17579  
 17580  		}
 17581  	case CC_DOLLAR:
 17582  		fallthrough
 17583  	case CC_VARALPHA:
 17584  		{
 17585  			var n int32 = 0
 17586  
 17587  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17588  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17589  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 17590  					n++
 17591  				} else if c == '(' && n > 0 {
 17592  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 17593  						i++
 17594  					}
 17595  					if c == ')' {
 17596  						i++
 17597  					} else {
 17598  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17599  					}
 17600  					break
 17601  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 17602  					i++
 17603  				} else {
 17604  					break
 17605  				}
 17606  			}
 17607  			if n == 0 {
 17608  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17609  			}
 17610  			return i
 17611  
 17612  		}
 17613  	case CC_KYWD:
 17614  		{
 17615  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 17616  			}
 17617  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17618  				i++
 17619  				break
 17620  			}
 17621  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17622  			return i
 17623  
 17624  		}
 17625  	case CC_X:
 17626  		{
 17627  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 17628  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17629  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17630  				}
 17631  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 17632  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17633  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 17634  						i++
 17635  					}
 17636  				}
 17637  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 17638  					i++
 17639  				}
 17640  				return i
 17641  			}
 17642  
 17643  		}
 17644  		fallthrough
 17645  	case CC_ID:
 17646  		{
 17647  			i = 1
 17648  			break
 17649  
 17650  		}
 17651  	default:
 17652  		{
 17653  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17654  			return 1
 17655  
 17656  		}
 17657  	}
 17658  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17659  		i++
 17660  	}
 17661  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17662  	return i
 17663  }
 17664  
 17665  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 17666  	bp := tls.Alloc(4)
 17667  	defer tls.Free(4)
 17668  
 17669  	var z uintptr
 17670  	var nZ sqlite3_int64
 17671  	var nSql sqlite3_int64
 17672  	var i int32
 17673  	var j int32
 17674  
 17675  	var n int32
 17676  	var k int32
 17677  
 17678  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 17679  	nZ = nSql
 17680  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 17681  	if z == uintptr(0) {
 17682  		return uintptr(0)
 17683  	}
 17684  	for i = libc.AssignInt32(&j, 0); *(*uint8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 17685  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 17686  		switch *(*int32)(unsafe.Pointer(bp)) {
 17687  		case TK_SPACE:
 17688  			{
 17689  				break
 17690  
 17691  			}
 17692  		case TK_ERROR:
 17693  			{
 17694  				sqlite3.Xsqlite3_free(tls, z)
 17695  				return uintptr(0)
 17696  
 17697  			}
 17698  		case TK_LITERAL:
 17699  			{
 17700  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('?')
 17701  				break
 17702  
 17703  			}
 17704  		case TK_PUNCT:
 17705  			fallthrough
 17706  		case TK_NAME:
 17707  			{
 17708  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 17709  					if j >= 3 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(2), ts+5851, uint64(2)) == 0 && !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(j-3)))])&0x46 != 0) ||
 17710  						j >= 4 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(3), ts+5854, uint64(3)) == 0 && !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(j-4)))])&0x46 != 0) {
 17711  					} else {
 17712  						*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('?')
 17713  						break
 17714  					}
 17715  				}
 17716  				if j > 0 && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(j-1)))])&0x46 != 0 && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zSql + uintptr(i)))])&0x46 != 0 {
 17717  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(' ')
 17718  				}
 17719  				for k = 0; k < n; k++ {
 17720  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = sqlite3UpperToLower[*(*uint8)(unsafe.Pointer(zSql + uintptr(i+k)))]
 17721  				}
 17722  				break
 17723  
 17724  			}
 17725  		}
 17726  	}
 17727  	for j > 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 17728  		j--
 17729  	}
 17730  	if j > 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 17731  		*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(';')
 17732  	}
 17733  	*(*uint8)(unsafe.Pointer(z + uintptr(j))) = uint8(0)
 17734  
 17735  	for i = 0; i < j; i = n {
 17736  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 17737  		var nParen int32
 17738  		if zIn == uintptr(0) {
 17739  			break
 17740  		}
 17741  		n = int32((int64(zIn)-int64(z))/1) + 3
 17742  		if n != 0 && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1)))])&0x46 != 0 {
 17743  			continue
 17744  		}
 17745  		if libc.Xstrncmp(tls, zIn, ts+5862, uint64(9)) == 0 && !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zIn + 9))])&0x46 != 0) {
 17746  			continue
 17747  		}
 17748  		if libc.Xstrncmp(tls, zIn, ts+5872, uint64(7)) == 0 && !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(zIn + 7))])&0x46 != 0) {
 17749  			continue
 17750  		}
 17751  		nParen = 1
 17752  		k = 0
 17753  		for ; *(*uint8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 17754  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 17755  				nParen++
 17756  			}
 17757  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 17758  				nParen--
 17759  				if nParen == 0 {
 17760  					break
 17761  				}
 17762  			}
 17763  		}
 17764  
 17765  		if k < 5 {
 17766  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 17767  			if z == uintptr(0) {
 17768  				return uintptr(0)
 17769  			}
 17770  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17771  		} else if k > 5 {
 17772  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17773  		}
 17774  		j = j - k + 5
 17775  		*(*uint8)(unsafe.Pointer(z + uintptr(j))) = uint8(0)
 17776  		libc.Xmemcpy(tls, z+uintptr(n), ts+5880, uint64(5))
 17777  	}
 17778  	return z
 17779  }
 17780  
 17781  type Percentile1 = struct {
 17782  	FnAlloc uint32
 17783  	FnUsed  uint32
 17784  	FrPct   float64
 17785  	Fa      uintptr
 17786  }
 17787  
 17788  type Percentile = Percentile1
 17789  
 17790  func isInfinity(tls *libc.TLS, r float64) int32 {
 17791  	bp := tls.Alloc(16)
 17792  	defer tls.Free(16)
 17793  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 17794  
 17795  	libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 17796  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 17797  }
 17798  
 17799  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 17800  	a = a - b
 17801  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 17802  }
 17803  
 17804  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 17805  	var p uintptr
 17806  	var rPct float64
 17807  	var eType int32
 17808  	var y float64
 17809  
 17810  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17811  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17812  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 17813  		rPct < 0.0 || rPct > 100.0 {
 17814  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17815  			ts+5886, -1)
 17816  		return
 17817  	}
 17818  
 17819  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 17820  	if p == uintptr(0) {
 17821  		return
 17822  	}
 17823  
 17824  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 17825  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 17826  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 17827  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17828  			ts+5953, -1)
 17829  		return
 17830  	}
 17831  
 17832  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17833  	if eType == SQLITE_NULL {
 17834  		return
 17835  	}
 17836  
 17837  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 17838  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17839  			ts+6017, -1)
 17840  		return
 17841  	}
 17842  
 17843  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17844  	if isInfinity(tls, y) != 0 {
 17845  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 17846  		return
 17847  	}
 17848  
 17849  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 17850  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 17851  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(unsafe.Sizeof(float64(0)))*uint64(n))
 17852  		if a == uintptr(0) {
 17853  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17854  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17855  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 17856  			return
 17857  		}
 17858  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 17859  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 17860  	}
 17861  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 17862  }
 17863  
 17864  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 17865  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 17866  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 17867  	if a == b {
 17868  		return 0
 17869  	}
 17870  	if a < b {
 17871  		return -1
 17872  	}
 17873  	return +1
 17874  }
 17875  
 17876  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 17877  	var p uintptr
 17878  	var i1 uint32
 17879  	var i2 uint32
 17880  	var v1 float64
 17881  	var v2 float64
 17882  	var ix float64
 17883  	var vx float64
 17884  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 17885  	if p == uintptr(0) {
 17886  		return
 17887  	}
 17888  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 17889  		return
 17890  	}
 17891  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 17892  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64((*Percentile)(unsafe.Pointer(p)).FnUsed), uint64(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 17893  			f func(*libc.TLS, uintptr, uintptr) int32
 17894  		}{doubleCmp})))
 17895  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 17896  		i1 = uint32(ix)
 17897  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 17898  			i2 = i1
 17899  		} else {
 17900  			i2 = i1 + uint32(1)
 17901  		}
 17902  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 17903  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 17904  		vx = v1 + (v2-v1)*(ix-float64(i1))
 17905  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 17906  	}
 17907  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17908  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17909  }
 17910  
 17911  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17912  	var rc int32 = SQLITE_OK
 17913  	_ = pApi
 17914  
 17915  	_ = pzErrMsg
 17916  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 17917  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17918  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17919  			f func(*libc.TLS, uintptr, int32, uintptr)
 17920  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 17921  	return rc
 17922  }
 17923  
 17924  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 17925  
 17926  type prefixes_vtab = prefixes_vtab1
 17927  
 17928  type prefixes_cursor1 = struct {
 17929  	Fbase        sqlite3_vtab_cursor
 17930  	FiRowid      sqlite3_int64
 17931  	FzStr        uintptr
 17932  	FnStr        int32
 17933  	F__ccgo_pad1 [4]byte
 17934  }
 17935  
 17936  type prefixes_cursor = prefixes_cursor1
 17937  
 17938  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17939  	var pNew uintptr
 17940  	var rc int32
 17941  
 17942  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17943  		ts+6098)
 17944  	if rc == SQLITE_OK {
 17945  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 17946  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17947  		if pNew == uintptr(0) {
 17948  			return SQLITE_NOMEM
 17949  		}
 17950  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(prefixes_vtab{})))
 17951  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 17952  	}
 17953  	return rc
 17954  }
 17955  
 17956  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17957  	var p uintptr = pVtab
 17958  	sqlite3.Xsqlite3_free(tls, p)
 17959  	return SQLITE_OK
 17960  }
 17961  
 17962  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17963  	var pCur uintptr
 17964  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 17965  	if pCur == uintptr(0) {
 17966  		return SQLITE_NOMEM
 17967  	}
 17968  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(prefixes_cursor{})))
 17969  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17970  	return SQLITE_OK
 17971  }
 17972  
 17973  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 17974  	var pCur uintptr = cur
 17975  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17976  	sqlite3.Xsqlite3_free(tls, pCur)
 17977  	return SQLITE_OK
 17978  }
 17979  
 17980  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 17981  	var pCur uintptr = cur
 17982  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 17983  	return SQLITE_OK
 17984  }
 17985  
 17986  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17987  	var pCur uintptr = cur
 17988  	switch i {
 17989  	case 0:
 17990  		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),
 17991  			uintptr(0))
 17992  		break
 17993  	default:
 17994  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 17995  		break
 17996  	}
 17997  	return SQLITE_OK
 17998  }
 17999  
 18000  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18001  	var pCur uintptr = cur
 18002  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 18003  	return SQLITE_OK
 18004  }
 18005  
 18006  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 18007  	var pCur uintptr = cur
 18008  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 18009  }
 18010  
 18011  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18012  	bp := tls.Alloc(8)
 18013  	defer tls.Free(8)
 18014  
 18015  	var pCur uintptr = pVtabCursor
 18016  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 18017  	if argc > 0 {
 18018  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 18019  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 18020  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 18021  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 18022  			}
 18023  			return 0
 18024  		}()
 18025  	} else {
 18026  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 18027  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 18028  	}
 18029  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 18030  	return SQLITE_OK
 18031  }
 18032  
 18033  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18034  	var i int32
 18035  	var p uintptr
 18036  
 18037  	i = 0
 18038  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 18039  __1:
 18040  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 18041  		goto __3
 18042  	}
 18043  	{
 18044  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 18045  			goto __2
 18046  		}
 18047  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 18048  			goto __2
 18049  		}
 18050  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 18051  			goto __2
 18052  		}
 18053  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 18054  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 18055  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 18056  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 18057  		return SQLITE_OK
 18058  
 18059  	}
 18060  	goto __2
 18061  __2:
 18062  	i++
 18063  	p += 12
 18064  	goto __1
 18065  	goto __3
 18066  __3:
 18067  	;
 18068  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 18069  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 18070  	return SQLITE_OK
 18071  }
 18072  
 18073  var prefixesModule = sqlite3_module{
 18074  	FxConnect:    0,
 18075  	FxBestIndex:  0,
 18076  	FxDisconnect: 0,
 18077  	FxOpen:       0,
 18078  	FxClose:      0,
 18079  	FxFilter:     0,
 18080  	FxNext:       0,
 18081  	FxEof:        0,
 18082  	FxColumn:     0,
 18083  	FxRowid:      0,
 18084  }
 18085  
 18086  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 18087  	var nByte int32
 18088  	var nRet int32 = 0
 18089  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 18090  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 18091  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 18092  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 18093  	var i int32
 18094  
 18095  	nByte = func() int32 {
 18096  		if nL > nR {
 18097  			return nL
 18098  		}
 18099  		return nR
 18100  	}()
 18101  	for i = 0; i < nByte; i++ {
 18102  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 18103  			break
 18104  		}
 18105  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 18106  			nRet++
 18107  		}
 18108  	}
 18109  
 18110  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 18111  		nRet--
 18112  	}
 18113  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 18114  }
 18115  
 18116  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18117  	var rc int32 = SQLITE_OK
 18118  	_ = pApi
 18119  
 18120  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 18121  	if rc == SQLITE_OK {
 18122  		rc = sqlite3.Xsqlite3_create_function(tls,
 18123  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 18124  				f func(*libc.TLS, uintptr, int32, uintptr)
 18125  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 18126  	}
 18127  	return rc
 18128  }
 18129  
 18130  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 18131  
 18132  type qpvtab_vtab = qpvtab_vtab1
 18133  
 18134  type qpvtab_cursor1 = struct {
 18135  	Fbase   sqlite3_vtab_cursor
 18136  	FiRowid sqlite3_int64
 18137  	FzData  uintptr
 18138  	FnData  int32
 18139  	Fflags  int32
 18140  }
 18141  
 18142  type qpvtab_cursor = qpvtab_cursor1
 18143  
 18144  var azColname = [13]uintptr{
 18145  	ts + 6185,
 18146  	ts + 6188,
 18147  	ts + 6191,
 18148  	ts + 6194,
 18149  	ts + 6197,
 18150  	ts + 6200,
 18151  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 18152  	ts + 6214,
 18153  	ts + 584,
 18154  }
 18155  
 18156  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 18157  	var pNew uintptr
 18158  	var rc int32
 18159  
 18160  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 18161  		ts+6220)
 18162  	if rc == SQLITE_OK {
 18163  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 18164  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 18165  		if pNew == uintptr(0) {
 18166  			return SQLITE_NOMEM
 18167  		}
 18168  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(qpvtab_vtab{})))
 18169  	}
 18170  	return rc
 18171  }
 18172  
 18173  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18174  	var p uintptr = pVtab
 18175  	sqlite3.Xsqlite3_free(tls, p)
 18176  	return SQLITE_OK
 18177  }
 18178  
 18179  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 18180  	var pCur uintptr
 18181  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 18182  	if pCur == uintptr(0) {
 18183  		return SQLITE_NOMEM
 18184  	}
 18185  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(qpvtab_cursor{})))
 18186  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18187  	return SQLITE_OK
 18188  }
 18189  
 18190  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 18191  	var pCur uintptr = cur
 18192  	sqlite3.Xsqlite3_free(tls, pCur)
 18193  	return SQLITE_OK
 18194  }
 18195  
 18196  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 18197  	var pCur uintptr = cur
 18198  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18199  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18200  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 18201  		if zEnd != 0 {
 18202  			zEnd++
 18203  		}
 18204  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64(int32((int64(zEnd) - int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1))
 18205  	}
 18206  	return SQLITE_OK
 18207  }
 18208  
 18209  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18210  	bp := tls.Alloc(1)
 18211  	defer tls.Free(1)
 18212  
 18213  	var pCur uintptr = cur
 18214  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18215  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18216  		var zEnd uintptr
 18217  		var j int32
 18218  		j = QPVTAB_VN
 18219  		for 1 != 0 {
 18220  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 18221  				if j == QPVTAB_RHS {
 18222  					return '\n'
 18223  				}
 18224  				return ','
 18225  			}())
 18226  			if j == i || zEnd == uintptr(0) {
 18227  				break
 18228  			}
 18229  			z = zEnd + uintptr(1)
 18230  			j++
 18231  		}
 18232  		if zEnd == z {
 18233  			sqlite3.Xsqlite3_result_null(tls, ctx)
 18234  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 18235  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 18236  		} else {
 18237  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int64(zEnd)-int64(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18238  		}
 18239  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 18240  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 18241  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 18242  		} else {
 18243  			*(*uint8)(unsafe.Pointer(bp)) = uint8('a' + i - QPVTAB_A)
 18244  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18245  		}
 18246  	} else if i == QPVTAB_FLAGS {
 18247  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 18248  	}
 18249  	return SQLITE_OK
 18250  }
 18251  
 18252  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18253  	var pCur uintptr = cur
 18254  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 18255  	return SQLITE_OK
 18256  }
 18257  
 18258  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 18259  	var pCur uintptr = cur
 18260  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 18261  }
 18262  
 18263  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18264  	var pCur uintptr = pVtabCursor
 18265  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 18266  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 18267  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 18268  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 18269  	return SQLITE_OK
 18270  }
 18271  
 18272  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 18273  	bp := tls.Alloc(25)
 18274  	defer tls.Free(25)
 18275  
 18276  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 18277  	case SQLITE_NULL:
 18278  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 18279  		break
 18280  	case SQLITE_INTEGER:
 18281  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 18282  		break
 18283  	case SQLITE_FLOAT:
 18284  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 18285  		break
 18286  	case SQLITE_TEXT:
 18287  		{
 18288  			var i int32
 18289  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 18290  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18291  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18292  			for i = 0; i < n; i++ {
 18293  				*(*uint8)(unsafe.Pointer(bp + 24)) = *(*uint8)(unsafe.Pointer(a + uintptr(i)))
 18294  				if int32(*(*uint8)(unsafe.Pointer(bp + 24))) == '\n' {
 18295  					*(*uint8)(unsafe.Pointer(bp + 24)) = uint8(' ')
 18296  				}
 18297  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18298  				if int32(*(*uint8)(unsafe.Pointer(bp + 24))) == '\'' {
 18299  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18300  				}
 18301  			}
 18302  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18303  			break
 18304  
 18305  		}
 18306  	case SQLITE_BLOB:
 18307  		{
 18308  			var i int32
 18309  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 18310  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18311  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 18312  			for i = 0; i < n; i++ {
 18313  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 18314  			}
 18315  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18316  			break
 18317  
 18318  		}
 18319  	}
 18320  }
 18321  
 18322  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18323  	bp := tls.Alloc(120)
 18324  	defer tls.Free(120)
 18325  
 18326  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 18327  	var i int32
 18328  	var k int32 = 0
 18329  	var rc int32
 18330  	_ = rc
 18331  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 18332  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18333  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18334  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18335  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18336  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18337  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18338  
 18339  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18340  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18341  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 18342  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 18343  				}
 18344  			}
 18345  		}
 18346  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18347  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18348  			iCol = QPVTAB_NONE
 18349  		}
 18350  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 18351  			libc.VaList(bp+8, i,
 18352  				azColname[iCol],
 18353  				op,
 18354  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 18355  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18356  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18357  
 18358  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18359  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18360  		}
 18361  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 18362  	}
 18363  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18364  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18365  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18366  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18367  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18368  			iCol = QPVTAB_NONE
 18369  		}
 18370  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18371  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 18372  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 18373  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 18374  			}
 18375  		}
 18376  	}
 18377  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 18378  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 18379  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 18380  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 18381  			func() uintptr {
 18382  				if iCol >= 0 {
 18383  					return azColname[iCol]
 18384  				}
 18385  				return ts + 6427
 18386  			}(),
 18387  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 18388  	}
 18389  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 18390  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 18391  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 18392  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 18393  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 18394  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 18395  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 18396  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 18397  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 18398  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 18399  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 18400  	return SQLITE_OK
 18401  }
 18402  
 18403  var qpvtabModule = sqlite3_module{
 18404  	FxConnect:    0,
 18405  	FxBestIndex:  0,
 18406  	FxDisconnect: 0,
 18407  	FxOpen:       0,
 18408  	FxClose:      0,
 18409  	FxFilter:     0,
 18410  	FxNext:       0,
 18411  	FxEof:        0,
 18412  	FxColumn:     0,
 18413  	FxRowid:      0,
 18414  }
 18415  
 18416  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18417  	var rc int32 = SQLITE_OK
 18418  	_ = pApi
 18419  
 18420  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 18421  	return rc
 18422  }
 18423  
 18424  type ReStateNumber = uint16
 18425  
 18426  type ReStateSet1 = struct {
 18427  	FnState      uint32
 18428  	F__ccgo_pad1 [4]byte
 18429  	FaState      uintptr
 18430  }
 18431  
 18432  type ReStateSet = ReStateSet1
 18433  
 18434  type ReInput1 = struct {
 18435  	Fz  uintptr
 18436  	Fi  int32
 18437  	Fmx int32
 18438  }
 18439  
 18440  type ReInput = ReInput1
 18441  
 18442  type ReCompiled1 = struct {
 18443  	FsIn       ReInput
 18444  	FzErr      uintptr
 18445  	FaOp       uintptr
 18446  	FaArg      uintptr
 18447  	FxNextChar uintptr
 18448  	FzInit     [12]uint8
 18449  	FnInit     int32
 18450  	FnState    uint32
 18451  	FnAlloc    uint32
 18452  }
 18453  
 18454  type ReCompiled = ReCompiled1
 18455  
 18456  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 18457  	var i uint32
 18458  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 18459  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 18460  			return
 18461  		}
 18462  	}
 18463  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 18464  }
 18465  
 18466  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 18467  	var c uint32
 18468  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 18469  		return uint32(0)
 18470  	}
 18471  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 18472  	if c >= uint32(0x80) {
 18473  		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 {
 18474  			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)
 18475  			if c < uint32(0x80) {
 18476  				c = uint32(0xfffd)
 18477  			}
 18478  		} 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 &&
 18479  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 18480  			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)
 18481  			*(*int32)(unsafe.Pointer(p + 8)) += 2
 18482  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 18483  				c = uint32(0xfffd)
 18484  			}
 18485  		} 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 &&
 18486  			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 {
 18487  			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) |
 18488  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 18489  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18490  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 18491  				c = uint32(0xfffd)
 18492  			}
 18493  		} else {
 18494  			c = uint32(0xfffd)
 18495  		}
 18496  	}
 18497  	return c
 18498  }
 18499  
 18500  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 18501  	var c uint32 = re_next_char(tls, p)
 18502  	if c >= uint32('A') && c <= uint32('Z') {
 18503  		c = c + uint32('a'-'A')
 18504  	}
 18505  	return c
 18506  }
 18507  
 18508  func re_word_char(tls *libc.TLS, c int32) int32 {
 18509  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 18510  		c >= 'A' && c <= 'Z' || c == '_')
 18511  }
 18512  
 18513  func re_digit_char(tls *libc.TLS, c int32) int32 {
 18514  	return libc.Bool32(c >= '0' && c <= '9')
 18515  }
 18516  
 18517  func re_space_char(tls *libc.TLS, c int32) int32 {
 18518  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 18519  }
 18520  
 18521  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 18522  	bp := tls.Alloc(248)
 18523  	defer tls.Free(248)
 18524  
 18525  	var pThis uintptr
 18526  	var pNext uintptr
 18527  
 18528  	var pToFree uintptr
 18529  	var i uint32
 18530  	var iSwap uint32
 18531  	var c int32
 18532  	var cPrev int32
 18533  	var rc int32
 18534  
 18535  	var x uint8
 18536  	var j int32
 18537  	var n int32
 18538  	var hit int32
 18539  	var x1 int32
 18540  	i = uint32(0)
 18541  	iSwap = uint32(0)
 18542  	c = RE_EOF + 1
 18543  	cPrev = 0
 18544  	rc = 0
 18545  
 18546  	(*ReInput)(unsafe.Pointer(bp + 232)).Fz = zIn
 18547  	(*ReInput)(unsafe.Pointer(bp + 232)).Fi = 0
 18548  	(*ReInput)(unsafe.Pointer(bp + 232)).Fmx = func() int32 {
 18549  		if nIn >= 0 {
 18550  			return nIn
 18551  		}
 18552  		return int32(libc.Xstrlen(tls, zIn))
 18553  	}()
 18554  
 18555  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 18556  		goto __1
 18557  	}
 18558  	x = *(*uint8)(unsafe.Pointer(pRe + 48))
 18559  __2:
 18560  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+232)).Fmx &&
 18561  		(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)) {
 18562  		goto __3
 18563  	}
 18564  	(*ReInput)(unsafe.Pointer(bp+232)).Fi++
 18565  	goto __2
 18566  __3:
 18567  	;
 18568  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+232)).Fmx) {
 18569  		goto __4
 18570  	}
 18571  	return 0
 18572  __4:
 18573  	;
 18574  __1:
 18575  	;
 18576  	if !(uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState) <= uint64(unsafe.Sizeof([100]ReStateNumber{}))/(uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2))) {
 18577  		goto __5
 18578  	}
 18579  	pToFree = uintptr(0)
 18580  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 32
 18581  	goto __6
 18582  __5:
 18583  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2)*uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 18584  	if !(pToFree == uintptr(0)) {
 18585  		goto __7
 18586  	}
 18587  	return -1
 18588  __7:
 18589  	;
 18590  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 18591  __6:
 18592  	;
 18593  	(*ReStateSet)(unsafe.Pointer(bp + 1*16)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 18594  	pNext = bp + 1*16
 18595  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18596  	re_add_state(tls, pNext, 0)
 18597  __8:
 18598  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 18599  		goto __9
 18600  	}
 18601  	cPrev = c
 18602  	c = int32((*struct {
 18603  		f func(*libc.TLS, uintptr) uint32
 18604  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+232))
 18605  	pThis = pNext
 18606  	pNext = bp + uintptr(iSwap)*16
 18607  	iSwap = uint32(1) - iSwap
 18608  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18609  	i = uint32(0)
 18610  __10:
 18611  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 18612  		goto __12
 18613  	}
 18614  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 18615  	switch int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 18616  	case RE_OP_MATCH:
 18617  		goto __14
 18618  	case RE_OP_ANY:
 18619  		goto __15
 18620  	case RE_OP_WORD:
 18621  		goto __16
 18622  	case RE_OP_NOTWORD:
 18623  		goto __17
 18624  	case RE_OP_DIGIT:
 18625  		goto __18
 18626  	case RE_OP_NOTDIGIT:
 18627  		goto __19
 18628  	case RE_OP_SPACE:
 18629  		goto __20
 18630  	case RE_OP_NOTSPACE:
 18631  		goto __21
 18632  	case RE_OP_BOUNDARY:
 18633  		goto __22
 18634  	case RE_OP_ANYSTAR:
 18635  		goto __23
 18636  	case RE_OP_FORK:
 18637  		goto __24
 18638  	case RE_OP_GOTO:
 18639  		goto __25
 18640  	case RE_OP_ACCEPT:
 18641  		goto __26
 18642  	case RE_OP_CC_EXC:
 18643  		goto __27
 18644  	case RE_OP_CC_INC:
 18645  		goto __28
 18646  	}
 18647  	goto __13
 18648  __14:
 18649  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 18650  		goto __29
 18651  	}
 18652  	re_add_state(tls, pNext, x1+1)
 18653  __29:
 18654  	;
 18655  	goto __13
 18656  
 18657  __15:
 18658  	if !(c != 0) {
 18659  		goto __30
 18660  	}
 18661  	re_add_state(tls, pNext, x1+1)
 18662  __30:
 18663  	;
 18664  	goto __13
 18665  
 18666  __16:
 18667  	if !(re_word_char(tls, c) != 0) {
 18668  		goto __31
 18669  	}
 18670  	re_add_state(tls, pNext, x1+1)
 18671  __31:
 18672  	;
 18673  	goto __13
 18674  
 18675  __17:
 18676  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 18677  		goto __32
 18678  	}
 18679  	re_add_state(tls, pNext, x1+1)
 18680  __32:
 18681  	;
 18682  	goto __13
 18683  
 18684  __18:
 18685  	if !(re_digit_char(tls, c) != 0) {
 18686  		goto __33
 18687  	}
 18688  	re_add_state(tls, pNext, x1+1)
 18689  __33:
 18690  	;
 18691  	goto __13
 18692  
 18693  __19:
 18694  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 18695  		goto __34
 18696  	}
 18697  	re_add_state(tls, pNext, x1+1)
 18698  __34:
 18699  	;
 18700  	goto __13
 18701  
 18702  __20:
 18703  	if !(re_space_char(tls, c) != 0) {
 18704  		goto __35
 18705  	}
 18706  	re_add_state(tls, pNext, x1+1)
 18707  __35:
 18708  	;
 18709  	goto __13
 18710  
 18711  __21:
 18712  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 18713  		goto __36
 18714  	}
 18715  	re_add_state(tls, pNext, x1+1)
 18716  __36:
 18717  	;
 18718  	goto __13
 18719  
 18720  __22:
 18721  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 18722  		goto __37
 18723  	}
 18724  	re_add_state(tls, pThis, x1+1)
 18725  __37:
 18726  	;
 18727  	goto __13
 18728  
 18729  __23:
 18730  	re_add_state(tls, pNext, x1)
 18731  	re_add_state(tls, pThis, x1+1)
 18732  	goto __13
 18733  
 18734  __24:
 18735  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18736  	re_add_state(tls, pThis, x1+1)
 18737  	goto __13
 18738  
 18739  __25:
 18740  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18741  	goto __13
 18742  
 18743  __26:
 18744  	rc = 1
 18745  	goto re_match_end
 18746  
 18747  __27:
 18748  	if !(c == 0) {
 18749  		goto __38
 18750  	}
 18751  	goto __13
 18752  __38:
 18753  	;
 18754  	goto re_op_cc_inc
 18755  
 18756  __28:
 18757  re_op_cc_inc:
 18758  	j = 1
 18759  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 18760  	hit = 0
 18761  	j = 1
 18762  __39:
 18763  	if !(j > 0 && j < n) {
 18764  		goto __41
 18765  	}
 18766  	if !(int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 18767  		goto __42
 18768  	}
 18769  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 18770  		goto __44
 18771  	}
 18772  	hit = 1
 18773  	j = -1
 18774  __44:
 18775  	;
 18776  	goto __43
 18777  __42:
 18778  	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) {
 18779  		goto __45
 18780  	}
 18781  	hit = 1
 18782  	j = -1
 18783  	goto __46
 18784  __45:
 18785  	j++
 18786  __46:
 18787  	;
 18788  __43:
 18789  	;
 18790  	goto __40
 18791  __40:
 18792  	j++
 18793  	goto __39
 18794  	goto __41
 18795  __41:
 18796  	;
 18797  	if !(int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 18798  		goto __47
 18799  	}
 18800  	hit = libc.BoolInt32(!(hit != 0))
 18801  __47:
 18802  	;
 18803  	if !(hit != 0) {
 18804  		goto __48
 18805  	}
 18806  	re_add_state(tls, pNext, x1+n)
 18807  __48:
 18808  	;
 18809  	goto __13
 18810  
 18811  __13:
 18812  	;
 18813  	goto __11
 18814  __11:
 18815  	i++
 18816  	goto __10
 18817  	goto __12
 18818  __12:
 18819  	;
 18820  	goto __8
 18821  __9:
 18822  	;
 18823  	i = uint32(0)
 18824  __49:
 18825  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 18826  		goto __51
 18827  	}
 18828  	if !(int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pNext)).FaState + uintptr(i)*2)))))) == RE_OP_ACCEPT) {
 18829  		goto __52
 18830  	}
 18831  	rc = 1
 18832  	goto __51
 18833  __52:
 18834  	;
 18835  	goto __50
 18836  __50:
 18837  	i++
 18838  	goto __49
 18839  	goto __51
 18840  __51:
 18841  	;
 18842  re_match_end:
 18843  	sqlite3.Xsqlite3_free(tls, pToFree)
 18844  	return rc
 18845  }
 18846  
 18847  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 18848  	var aOp uintptr
 18849  	var aArg uintptr
 18850  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(N)*uint64(unsafe.Sizeof(uint8(0))))
 18851  	if aOp == uintptr(0) {
 18852  		return 1
 18853  	}
 18854  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 18855  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 18856  	if aArg == uintptr(0) {
 18857  		return 1
 18858  	}
 18859  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 18860  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 18861  	return 0
 18862  }
 18863  
 18864  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 18865  	var i int32
 18866  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 18867  		return 0
 18868  	}
 18869  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 18870  		*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 18871  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 18872  	}
 18873  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 18874  	*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = uint8(op)
 18875  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 18876  	return iBefore
 18877  }
 18878  
 18879  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 18880  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 18881  }
 18882  
 18883  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 18884  	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 {
 18885  		return
 18886  	}
 18887  	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(uint8(0))))
 18888  	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))))
 18889  	*(*uint32)(unsafe.Pointer(p + 64)) += uint32(N)
 18890  }
 18891  
 18892  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 18893  	if c >= '0' && c <= '9' {
 18894  		c = c - '0'
 18895  	} else if c >= 'a' && c <= 'f' {
 18896  		c = c - ('a' - 10)
 18897  	} else if c >= 'A' && c <= 'F' {
 18898  		c = c - ('A' - 10)
 18899  	} else {
 18900  		return 0
 18901  	}
 18902  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 18903  	return 1
 18904  }
 18905  
 18906  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 18907  	bp := tls.Alloc(4)
 18908  	defer tls.Free(4)
 18909  
 18910  	var i int32
 18911  	*(*int32)(unsafe.Pointer(bp)) = 0
 18912  	var c uint8
 18913  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18914  		return uint32(0)
 18915  	}
 18916  	c = *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 18917  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18918  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18919  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18920  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 18921  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 18922  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 18923  			*(*int32)(unsafe.Pointer(p + 8)) += 5
 18924  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18925  		}
 18926  	}
 18927  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18928  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18929  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18930  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 18931  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18932  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18933  		}
 18934  	}
 18935  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 18936  	}
 18937  	if zEsc[i] != 0 {
 18938  		if i < 6 {
 18939  			c = zTrans[i]
 18940  		}
 18941  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18942  	} else {
 18943  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 18944  	}
 18945  	return uint32(c)
 18946  }
 18947  
 18948  var zEsc = *(*[21]uint8)(unsafe.Pointer(ts + 6559))
 18949  var zTrans = *(*[7]uint8)(unsafe.Pointer(ts + 6580))
 18950  
 18951  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 18952  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18953  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 18954  	}
 18955  	return uint8(0)
 18956  }
 18957  
 18958  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 18959  	var zErr uintptr
 18960  	var iStart int32
 18961  	var iEnd int32
 18962  	var iGoto int32
 18963  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18964  	zErr = re_subcompile_string(tls, p)
 18965  	if zErr != 0 {
 18966  		return zErr
 18967  	}
 18968  	for int32(rePeek(tls, p)) == '|' {
 18969  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18970  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 18971  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 18972  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18973  		zErr = re_subcompile_string(tls, p)
 18974  		if zErr != 0 {
 18975  			return zErr
 18976  		}
 18977  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 18978  	}
 18979  	return uintptr(0)
 18980  }
 18981  
 18982  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 18983  	var iPrev int32 = -1
 18984  	var iStart int32
 18985  	var c uint32
 18986  	var zErr uintptr
 18987  	for libc.AssignUint32(&c, (*struct {
 18988  		f func(*libc.TLS, uintptr) uint32
 18989  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18990  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18991  		switch c {
 18992  		case uint32('|'):
 18993  			fallthrough
 18994  		case uint32('$'):
 18995  			fallthrough
 18996  		case uint32(')'):
 18997  			{
 18998  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 18999  				return uintptr(0)
 19000  
 19001  			}
 19002  		case uint32('('):
 19003  			{
 19004  				zErr = re_subcompile_re(tls, p)
 19005  				if zErr != 0 {
 19006  					return zErr
 19007  				}
 19008  				if int32(rePeek(tls, p)) != ')' {
 19009  					return ts + 6587
 19010  				}
 19011  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19012  				break
 19013  
 19014  			}
 19015  		case uint32('.'):
 19016  			{
 19017  				if int32(rePeek(tls, p)) == '*' {
 19018  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 19019  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19020  				} else {
 19021  					re_append(tls, p, RE_OP_ANY, 0)
 19022  				}
 19023  				break
 19024  
 19025  			}
 19026  		case uint32('*'):
 19027  			{
 19028  				if iPrev < 0 {
 19029  					return ts + 6601
 19030  				}
 19031  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 19032  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 19033  				break
 19034  
 19035  			}
 19036  		case uint32('+'):
 19037  			{
 19038  				if iPrev < 0 {
 19039  					return ts + 6621
 19040  				}
 19041  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 19042  				break
 19043  
 19044  			}
 19045  		case uint32('?'):
 19046  			{
 19047  				if iPrev < 0 {
 19048  					return ts + 6641
 19049  				}
 19050  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 19051  				break
 19052  
 19053  			}
 19054  		case uint32('{'):
 19055  			{
 19056  				var m int32 = 0
 19057  				var n int32 = 0
 19058  				var sz int32
 19059  				var j int32
 19060  				if iPrev < 0 {
 19061  					return ts + 6661
 19062  				}
 19063  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 19064  					m = int32(uint32(m*10) + c - uint32('0'))
 19065  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19066  				}
 19067  				n = m
 19068  				if c == uint32(',') {
 19069  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19070  					n = 0
 19071  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 19072  						n = int32(uint32(n*10) + c - uint32('0'))
 19073  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19074  					}
 19075  				}
 19076  				if c != uint32('}') {
 19077  					return ts + 6685
 19078  				}
 19079  				if n > 0 && n < m {
 19080  					return ts + 6699
 19081  				}
 19082  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19083  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 19084  				if m == 0 {
 19085  					if n == 0 {
 19086  						return ts + 6724
 19087  					}
 19088  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 19089  					n--
 19090  				} else {
 19091  					for j = 1; j < m; j++ {
 19092  						re_copy(tls, p, iPrev, sz)
 19093  					}
 19094  				}
 19095  				for j = m; j < n; j++ {
 19096  					re_append(tls, p, RE_OP_FORK, sz+1)
 19097  					re_copy(tls, p, iPrev, sz)
 19098  				}
 19099  				if n == 0 && m > 0 {
 19100  					re_append(tls, p, RE_OP_FORK, -sz)
 19101  				}
 19102  				break
 19103  
 19104  			}
 19105  		case uint32('['):
 19106  			{
 19107  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 19108  				if int32(rePeek(tls, p)) == '^' {
 19109  					re_append(tls, p, RE_OP_CC_EXC, 0)
 19110  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19111  				} else {
 19112  					re_append(tls, p, RE_OP_CC_INC, 0)
 19113  				}
 19114  				for libc.AssignUint32(&c, (*struct {
 19115  					f func(*libc.TLS, uintptr) uint32
 19116  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 19117  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 19118  						return ts + 6757
 19119  					}
 19120  					if c == uint32('\\') {
 19121  						c = re_esc_char(tls, p)
 19122  					}
 19123  					if int32(rePeek(tls, p)) == '-' {
 19124  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 19125  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19126  						c = (*struct {
 19127  							f func(*libc.TLS, uintptr) uint32
 19128  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 19129  						if c == uint32('\\') {
 19130  							c = re_esc_char(tls, p)
 19131  						}
 19132  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 19133  					} else {
 19134  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 19135  					}
 19136  					if int32(rePeek(tls, p)) == ']' {
 19137  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19138  						break
 19139  					}
 19140  				}
 19141  				if c == uint32(0) {
 19142  					return ts + 6795
 19143  				}
 19144  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 19145  				break
 19146  
 19147  			}
 19148  		case uint32('\\'):
 19149  			{
 19150  				var specialOp int32 = 0
 19151  				switch int32(rePeek(tls, p)) {
 19152  				case 'b':
 19153  					specialOp = RE_OP_BOUNDARY
 19154  					break
 19155  				case 'd':
 19156  					specialOp = RE_OP_DIGIT
 19157  					break
 19158  				case 'D':
 19159  					specialOp = RE_OP_NOTDIGIT
 19160  					break
 19161  				case 's':
 19162  					specialOp = RE_OP_SPACE
 19163  					break
 19164  				case 'S':
 19165  					specialOp = RE_OP_NOTSPACE
 19166  					break
 19167  				case 'w':
 19168  					specialOp = RE_OP_WORD
 19169  					break
 19170  				case 'W':
 19171  					specialOp = RE_OP_NOTWORD
 19172  					break
 19173  				}
 19174  				if specialOp != 0 {
 19175  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19176  					re_append(tls, p, specialOp, 0)
 19177  				} else {
 19178  					c = re_esc_char(tls, p)
 19179  					re_append(tls, p, RE_OP_MATCH, int32(c))
 19180  				}
 19181  				break
 19182  
 19183  			}
 19184  		default:
 19185  			{
 19186  				re_append(tls, p, RE_OP_MATCH, int32(c))
 19187  				break
 19188  
 19189  			}
 19190  		}
 19191  		iPrev = iStart
 19192  	}
 19193  	return uintptr(0)
 19194  }
 19195  
 19196  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 19197  	if pRe != 0 {
 19198  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 19199  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 19200  		sqlite3.Xsqlite3_free(tls, pRe)
 19201  	}
 19202  }
 19203  
 19204  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 19205  	var pRe uintptr
 19206  	var zErr uintptr
 19207  	var i int32
 19208  	var j int32
 19209  
 19210  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 19211  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 19212  	if pRe == uintptr(0) {
 19213  		return ts + 2069
 19214  	}
 19215  	libc.Xmemset(tls, pRe, 0, uint64(unsafe.Sizeof(ReCompiled{})))
 19216  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 19217  		if noCase != 0 {
 19218  			return *(*uintptr)(unsafe.Pointer(&struct {
 19219  				f func(*libc.TLS, uintptr) uint32
 19220  			}{re_next_char_nocase}))
 19221  		}
 19222  		return *(*uintptr)(unsafe.Pointer(&struct {
 19223  			f func(*libc.TLS, uintptr) uint32
 19224  		}{re_next_char}))
 19225  	}()
 19226  	if re_resize(tls, pRe, 30) != 0 {
 19227  		sqlite3re_free(tls, pRe)
 19228  		return ts + 2069
 19229  	}
 19230  	if int32(*(*uint8)(unsafe.Pointer(zIn))) == '^' {
 19231  		zIn++
 19232  	} else {
 19233  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 19234  	}
 19235  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 19236  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 19237  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 19238  	zErr = re_subcompile_re(tls, pRe)
 19239  	if zErr != 0 {
 19240  		sqlite3re_free(tls, pRe)
 19241  		return zErr
 19242  	}
 19243  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19244  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 19245  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19246  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19247  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19248  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19249  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19250  	} else {
 19251  		sqlite3re_free(tls, pRe)
 19252  		return ts + 6808
 19253  	}
 19254  
 19255  	if int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 19256  		j = 0
 19257  		i = 1
 19258  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 19259  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 19260  			if x <= uint32(127) {
 19261  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 19262  			} else if x <= uint32(0xfff) {
 19263  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 19264  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19265  			} else if x <= uint32(0xffff) {
 19266  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 19267  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 19268  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19269  			} else {
 19270  				break
 19271  			}
 19272  		}
 19273  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(j-1)))) == 0 {
 19274  			j--
 19275  		}
 19276  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 19277  	}
 19278  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 19279  }
 19280  
 19281  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19282  	bp := tls.Alloc(8)
 19283  	defer tls.Free(8)
 19284  
 19285  	var zPattern uintptr
 19286  	var zStr uintptr
 19287  	var zErr uintptr
 19288  	var setAux int32 = 0
 19289  
 19290  	_ = argc
 19291  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 19292  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19293  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19294  		if zPattern == uintptr(0) {
 19295  			return
 19296  		}
 19297  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 19298  		if zErr != 0 {
 19299  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 19300  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 19301  			return
 19302  		}
 19303  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19304  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19305  			return
 19306  		}
 19307  		setAux = 1
 19308  	}
 19309  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 19310  	if zStr != uintptr(0) {
 19311  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 19312  	}
 19313  	if setAux != 0 {
 19314  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 19315  	}
 19316  }
 19317  
 19318  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19319  	var rc int32 = SQLITE_OK
 19320  	_ = pApi
 19321  
 19322  	_ = pzErrMsg
 19323  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 19324  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19325  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 19326  			f func(*libc.TLS, uintptr, int32, uintptr)
 19327  		}{re_sql_func})), uintptr(0), uintptr(0))
 19328  	if rc == SQLITE_OK {
 19329  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 19330  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19331  			db, *(*uintptr)(unsafe.Pointer(&struct {
 19332  				f func(*libc.TLS, uintptr, int32, uintptr)
 19333  			}{re_sql_func})), uintptr(0), uintptr(0))
 19334  	}
 19335  	return rc
 19336  }
 19337  
 19338  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 19339  	var v sqlite3_int64
 19340  	var ptr uintptr
 19341  
 19342  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19343  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4060)
 19344  	if ptr != 0 {
 19345  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 19346  	}
 19347  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 19348  }
 19349  
 19350  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19351  	var rc int32 = SQLITE_OK
 19352  	_ = pApi
 19353  
 19354  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 19355  		*(*uintptr)(unsafe.Pointer(&struct {
 19356  			f func(*libc.TLS, uintptr, int32, uintptr)
 19357  		}{rememberFunc})), uintptr(0), uintptr(0))
 19358  	return rc
 19359  }
 19360  
 19361  type series_cursor1 = struct {
 19362  	Fbase        sqlite3_vtab_cursor
 19363  	FisDesc      int32
 19364  	F__ccgo_pad1 [4]byte
 19365  	FiRowid      sqlite3_int64
 19366  	FiValue      sqlite3_int64
 19367  	FmnValue     sqlite3_int64
 19368  	FmxValue     sqlite3_int64
 19369  	FiStep       sqlite3_int64
 19370  }
 19371  
 19372  type series_cursor = series_cursor1
 19373  
 19374  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 19375  	var pNew uintptr
 19376  	var rc int32
 19377  
 19378  	_ = pUnused
 19379  	_ = argcUnused
 19380  	_ = argvUnused
 19381  	_ = pzErrUnused
 19382  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 19383  		ts+6855)
 19384  	if rc == SQLITE_OK {
 19385  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 19386  		if pNew == uintptr(0) {
 19387  			return SQLITE_NOMEM
 19388  		}
 19389  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 19390  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 19391  	}
 19392  	return rc
 19393  }
 19394  
 19395  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 19396  	sqlite3.Xsqlite3_free(tls, pVtab)
 19397  	return SQLITE_OK
 19398  }
 19399  
 19400  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 19401  	var pCur uintptr
 19402  	_ = pUnused
 19403  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 19404  	if pCur == uintptr(0) {
 19405  		return SQLITE_NOMEM
 19406  	}
 19407  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(series_cursor{})))
 19408  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 19409  	return SQLITE_OK
 19410  }
 19411  
 19412  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 19413  	sqlite3.Xsqlite3_free(tls, cur)
 19414  	return SQLITE_OK
 19415  }
 19416  
 19417  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 19418  	var pCur uintptr = cur
 19419  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19420  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19421  	} else {
 19422  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19423  	}
 19424  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 19425  	return SQLITE_OK
 19426  }
 19427  
 19428  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 19429  	var pCur uintptr = cur
 19430  	var x sqlite3_int64 = int64(0)
 19431  	switch i {
 19432  	case SERIES_COLUMN_START:
 19433  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19434  		break
 19435  	case SERIES_COLUMN_STOP:
 19436  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19437  		break
 19438  	case SERIES_COLUMN_STEP:
 19439  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19440  		break
 19441  	default:
 19442  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 19443  		break
 19444  	}
 19445  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 19446  	return SQLITE_OK
 19447  }
 19448  
 19449  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 19450  	var pCur uintptr = cur
 19451  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 19452  	return SQLITE_OK
 19453  }
 19454  
 19455  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 19456  	var pCur uintptr = cur
 19457  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19458  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 19459  	} else {
 19460  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 19461  	}
 19462  	return int32(0)
 19463  }
 19464  
 19465  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 19466  	var pCur uintptr = pVtabCursor
 19467  	var i int32 = 0
 19468  	_ = idxStrUnused
 19469  	if idxNum&1 != 0 {
 19470  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19471  	} else {
 19472  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 19473  	}
 19474  	if idxNum&2 != 0 {
 19475  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19476  	} else {
 19477  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 19478  	}
 19479  	if idxNum&4 != 0 {
 19480  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19481  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 19482  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19483  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 19484  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19485  			if idxNum&16 == 0 {
 19486  				idxNum = idxNum | 8
 19487  			}
 19488  		}
 19489  	} else {
 19490  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19491  	}
 19492  	for i = 0; i < argc; i++ {
 19493  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) == SQLITE_NULL {
 19494  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 19495  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 19496  			break
 19497  		}
 19498  	}
 19499  	if idxNum&8 != 0 {
 19500  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 19501  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19502  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 19503  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19504  		}
 19505  	} else {
 19506  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 19507  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19508  	}
 19509  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 19510  	return SQLITE_OK
 19511  }
 19512  
 19513  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 19514  	bp := tls.Alloc(12)
 19515  	defer tls.Free(12)
 19516  
 19517  	var i int32
 19518  	var j int32
 19519  	var idxNum int32 = 0
 19520  	var bStartSeen int32 = 0
 19521  	var unusableMask int32 = 0
 19522  	var nArg int32 = 0
 19523  
 19524  	var pConstraint uintptr
 19525  
 19526  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 19527  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 19528  	i = 0
 19529  __1:
 19530  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 19531  		goto __3
 19532  	}
 19533  	{
 19534  		var iCol int32
 19535  		var iMask int32
 19536  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 19537  			goto __2
 19538  		}
 19539  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 19540  
 19541  		iMask = int32(1) << iCol
 19542  		if iCol == 0 {
 19543  			bStartSeen = 1
 19544  		}
 19545  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 19546  			unusableMask = unusableMask | iMask
 19547  			goto __2
 19548  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 19549  			idxNum = idxNum | iMask
 19550  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 19551  		}
 19552  
 19553  	}
 19554  	goto __2
 19555  __2:
 19556  	i++
 19557  	pConstraint += 12
 19558  	goto __1
 19559  	goto __3
 19560  __3:
 19561  	;
 19562  	for i = 0; i < 3; i++ {
 19563  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 19564  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 19565  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 19566  		}
 19567  	}
 19568  
 19569  	if !(bStartSeen != 0) {
 19570  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 19571  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 19572  			ts+6914, 0)
 19573  		return SQLITE_ERROR
 19574  	}
 19575  	if unusableMask & ^idxNum != 0 {
 19576  		return SQLITE_CONSTRAINT
 19577  	}
 19578  	if idxNum&3 == 3 {
 19579  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 19580  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 19581  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 19582  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 19583  				idxNum = idxNum | 8
 19584  			} else {
 19585  				idxNum = idxNum | 16
 19586  			}
 19587  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 19588  		}
 19589  	} else {
 19590  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 19591  	}
 19592  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 19593  	return SQLITE_OK
 19594  }
 19595  
 19596  var seriesModule = sqlite3_module{
 19597  	FxConnect:    0,
 19598  	FxBestIndex:  0,
 19599  	FxDisconnect: 0,
 19600  	FxOpen:       0,
 19601  	FxClose:      0,
 19602  	FxFilter:     0,
 19603  	FxNext:       0,
 19604  	FxEof:        0,
 19605  	FxColumn:     0,
 19606  	FxRowid:      0,
 19607  }
 19608  
 19609  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19610  	var rc int32 = SQLITE_OK
 19611  	_ = pApi
 19612  
 19613  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 19614  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 19615  			ts+6972, 0)
 19616  		return SQLITE_ERROR
 19617  	}
 19618  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 19619  	return rc
 19620  }
 19621  
 19622  type u16 = uint16
 19623  
 19624  var midClass = [128]uint8{
 19625  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19626  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19627  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19628  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19629  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19630  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19631  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19632  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19633  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19634  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19635  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19636  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19637  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19638  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19639  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19640  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19641  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19642  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19643  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19644  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19645  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19646  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19647  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19648  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19649  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19650  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19651  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19652  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19653  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19654  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 19655  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19656  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19657  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19658  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19659  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19660  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19661  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19662  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19663  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19664  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19665  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19666  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19667  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19668  }
 19669  
 19670  var initClass = [128]uint8{
 19671  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19672  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19673  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19674  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19675  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19676  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19677  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19678  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19679  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19680  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19681  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19682  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19683  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19684  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19685  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19686  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19687  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19688  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19689  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19690  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19691  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19692  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19693  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19694  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19695  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19696  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19697  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19698  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19699  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19700  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 19701  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19702  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19703  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19704  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19705  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19706  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19707  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19708  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19709  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19710  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19711  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 19712  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19713  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19714  }
 19715  
 19716  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 19717  
 19718  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 19719  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 19720  	var i int32
 19721  	var nOut int32 = 0
 19722  	var cPrev uint8 = uint8(0x77)
 19723  	var cPrevX uint8 = uint8(0x77)
 19724  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 19725  
 19726  	if zOut == uintptr(0) {
 19727  		return uintptr(0)
 19728  	}
 19729  	if nIn > 2 {
 19730  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 19731  		case 'g':
 19732  			fallthrough
 19733  		case 'k':
 19734  			{
 19735  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 19736  					zIn++
 19737  					nIn--
 19738  				}
 19739  				break
 19740  
 19741  			}
 19742  		}
 19743  	}
 19744  	for i = 0; i < nIn; i++ {
 19745  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 19746  		if i+1 < nIn {
 19747  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 19748  				continue
 19749  			}
 19750  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 19751  				continue
 19752  			}
 19753  			if i+2 < nIn {
 19754  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 19755  					continue
 19756  				}
 19757  			}
 19758  		}
 19759  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 19760  		if int32(c) == CCLASS_SPACE {
 19761  			continue
 19762  		}
 19763  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 19764  			continue
 19765  		}
 19766  		aClass = uintptr(unsafe.Pointer(&midClass))
 19767  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 19768  			continue
 19769  		}
 19770  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 19771  			nOut--
 19772  		}
 19773  		cPrev = c
 19774  		if int32(c) == CCLASS_SILENT {
 19775  			continue
 19776  		}
 19777  		cPrevX = c
 19778  		c = className[c]
 19779  
 19780  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 19781  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 19782  		}
 19783  	}
 19784  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 19785  	return zOut
 19786  }
 19787  
 19788  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19789  	var zIn uintptr
 19790  	var zOut uintptr
 19791  
 19792  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19793  	if zIn == uintptr(0) {
 19794  		return
 19795  	}
 19796  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 19797  	if zOut == uintptr(0) {
 19798  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19799  	} else {
 19800  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 19801  	}
 19802  }
 19803  
 19804  func characterClass(tls *libc.TLS, cPrev uint8, c uint8) uint8 {
 19805  	if int32(cPrev) == 0 {
 19806  		return initClass[int32(c)&0x7f]
 19807  	}
 19808  	return midClass[int32(c)&0x7f]
 19809  }
 19810  
 19811  func insertOrDeleteCost(tls *libc.TLS, cPrev uint8, c uint8, cNext uint8) int32 {
 19812  	var classC uint8 = characterClass(tls, cPrev, c)
 19813  	var classCprev uint8
 19814  
 19815  	if int32(classC) == CCLASS_SILENT {
 19816  		return 1
 19817  	}
 19818  	if int32(cPrev) == int32(c) {
 19819  		return 10
 19820  	}
 19821  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 19822  		return 20
 19823  	}
 19824  	classCprev = characterClass(tls, cPrev, cPrev)
 19825  	if int32(classC) == int32(classCprev) {
 19826  		if int32(classC) == CCLASS_VOWEL {
 19827  			return 15
 19828  		} else {
 19829  			return 50
 19830  		}
 19831  	}
 19832  
 19833  	return 100
 19834  }
 19835  
 19836  func substituteCost(tls *libc.TLS, cPrev uint8, cFrom uint8, cTo uint8) int32 {
 19837  	var classFrom uint8
 19838  	var classTo uint8
 19839  	if int32(cFrom) == int32(cTo) {
 19840  		return 0
 19841  	}
 19842  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 19843  		return 0
 19844  	}
 19845  	classFrom = characterClass(tls, cPrev, cFrom)
 19846  	classTo = characterClass(tls, cPrev, cTo)
 19847  	if int32(classFrom) == int32(classTo) {
 19848  		return 40
 19849  	}
 19850  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 19851  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 19852  		return 75
 19853  	}
 19854  
 19855  	return 100
 19856  }
 19857  
 19858  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 19859  	bp := tls.Alloc(300)
 19860  	defer tls.Free(300)
 19861  
 19862  	var nA int32
 19863  	var nB int32
 19864  	var xA int32
 19865  	var xB int32
 19866  	var cA uint8 = uint8(0)
 19867  	var cB uint8
 19868  	var cAprev uint8
 19869  	var cBprev uint8
 19870  	var cAnext uint8
 19871  	var cBnext uint8
 19872  	var d int32
 19873  	var dc int32 = 0
 19874  	var res int32
 19875  	var m uintptr
 19876  	var cx uintptr
 19877  	var toFree uintptr = uintptr(0)
 19878  	var nMatch int32 = 0
 19879  
 19880  	if zA == uintptr(0) || zB == uintptr(0) {
 19881  		return -1
 19882  	}
 19883  
 19884  	for *(*uint8)(unsafe.Pointer(zA)) != 0 && int32(*(*uint8)(unsafe.Pointer(zA))) == int32(*(*uint8)(unsafe.Pointer(zB))) {
 19885  		dc = int32(*(*uint8)(unsafe.Pointer(zA)))
 19886  		zA++
 19887  		zB++
 19888  		nMatch++
 19889  	}
 19890  	if pnMatch != 0 {
 19891  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 19892  	}
 19893  	if int32(*(*uint8)(unsafe.Pointer(zA))) == 0 && int32(*(*uint8)(unsafe.Pointer(zB))) == 0 {
 19894  		return 0
 19895  	}
 19896  
 19897  	for nA = 0; *(*uint8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 19898  		if int32(*(*uint8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 19899  			return -2
 19900  		}
 19901  	}
 19902  	for nB = 0; *(*uint8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 19903  		if int32(*(*uint8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 19904  			return -2
 19905  		}
 19906  	}
 19907  
 19908  	if nA == 0 {
 19909  		cBprev = uint8(dc)
 19910  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignUint8(&cB, *(*uint8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 19911  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*uint8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 19912  			cBprev = cB
 19913  		}
 19914  		return res
 19915  	}
 19916  	if nB == 0 {
 19917  		cAprev = uint8(dc)
 19918  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignUint8(&cA, *(*uint8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 19919  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*uint8)(unsafe.Pointer(zA + uintptr(xA+1))))
 19920  			cAprev = cA
 19921  		}
 19922  		return res
 19923  	}
 19924  
 19925  	if int32(*(*uint8)(unsafe.Pointer(zA))) == '*' && int32(*(*uint8)(unsafe.Pointer(zA + 1))) == 0 {
 19926  		return 0
 19927  	}
 19928  
 19929  	if uint64(nB) < uint64(unsafe.Sizeof([75]int32{}))*uint64(4)/(uint64(unsafe.Sizeof(int32(0)))*uint64(5)) {
 19930  		m = bp
 19931  	} else {
 19932  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64((nB+1)*5)*uint64(unsafe.Sizeof(int32(0)))/uint64(4)))
 19933  		if m == uintptr(0) {
 19934  			return -3
 19935  		}
 19936  	}
 19937  	cx = m + uintptr(nB+1)*4
 19938  
 19939  	*(*int32)(unsafe.Pointer(m)) = 0
 19940  	*(*uint8)(unsafe.Pointer(cx)) = uint8(dc)
 19941  	cBprev = uint8(dc)
 19942  	for xB = 1; xB <= nB; xB++ {
 19943  		cBnext = *(*uint8)(unsafe.Pointer(zB + uintptr(xB)))
 19944  		cB = *(*uint8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19945  		*(*uint8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 19946  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 19947  		cBprev = cB
 19948  	}
 19949  	cAprev = uint8(dc)
 19950  	for xA = 1; xA <= nA; xA++ {
 19951  		var lastA int32 = libc.Bool32(xA == nA)
 19952  		cA = *(*uint8)(unsafe.Pointer(zA + uintptr(xA-1)))
 19953  		cAnext = *(*uint8)(unsafe.Pointer(zA + uintptr(xA)))
 19954  		if int32(cA) == '*' && lastA != 0 {
 19955  			break
 19956  		}
 19957  		d = *(*int32)(unsafe.Pointer(m))
 19958  		dc = int32(*(*uint8)(unsafe.Pointer(cx)))
 19959  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 19960  		cBprev = uint8(0)
 19961  		for xB = 1; xB <= nB; xB++ {
 19962  			var totalCost int32
 19963  			var insCost int32
 19964  			var delCost int32
 19965  			var subCost int32
 19966  			var ncx int32
 19967  			cB = *(*uint8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19968  			cBnext = *(*uint8)(unsafe.Pointer(zB + uintptr(xB)))
 19969  
 19970  			insCost = insertOrDeleteCost(tls, *(*uint8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 19971  			if lastA != 0 {
 19972  				insCost = insCost / FINAL_INS_COST_DIV
 19973  			}
 19974  
 19975  			delCost = insertOrDeleteCost(tls, *(*uint8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 19976  
 19977  			subCost = substituteCost(tls, *(*uint8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 19978  
 19979  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 19980  			ncx = int32(cB)
 19981  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 19982  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19983  				ncx = int32(cA)
 19984  			}
 19985  			if subCost+d < totalCost {
 19986  				totalCost = subCost + d
 19987  			}
 19988  
 19989  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19990  			dc = int32(*(*uint8)(unsafe.Pointer(cx + uintptr(xB))))
 19991  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 19992  			*(*uint8)(unsafe.Pointer(cx + uintptr(xB))) = uint8(ncx)
 19993  			cBprev = cB
 19994  		}
 19995  		cAprev = cA
 19996  	}
 19997  
 19998  	if int32(cA) == '*' {
 19999  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 20000  		for xB = 1; xB <= nB; xB++ {
 20001  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 20002  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 20003  				if pnMatch != 0 {
 20004  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 20005  				}
 20006  			}
 20007  		}
 20008  	} else {
 20009  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 20010  
 20011  	}
 20012  	sqlite3.Xsqlite3_free(tls, toFree)
 20013  	return res
 20014  }
 20015  
 20016  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20017  	var res int32 = editdist1(tls,
 20018  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 20019  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))),
 20020  		uintptr(0))
 20021  	if res < 0 {
 20022  		if res == -3 {
 20023  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20024  		} else if res == -2 {
 20025  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 20026  		} else {
 20027  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 20028  		}
 20029  	} else {
 20030  		sqlite3.Xsqlite3_result_int(tls, context, res)
 20031  	}
 20032  }
 20033  
 20034  type EditDist3Cost1 = struct {
 20035  	FpNext uintptr
 20036  	FnFrom u8
 20037  	FnTo   u8
 20038  	FiCost u16
 20039  	Fa     [4]uint8
 20040  }
 20041  
 20042  type EditDist3Cost = EditDist3Cost1
 20043  type EditDist3Config1 = struct {
 20044  	FnLang       int32
 20045  	F__ccgo_pad1 [4]byte
 20046  	Fa           uintptr
 20047  }
 20048  
 20049  type EditDist3Config = EditDist3Config1
 20050  type EditDist3From1 = struct {
 20051  	FnSubst      int32
 20052  	FnDel        int32
 20053  	FnByte       int32
 20054  	F__ccgo_pad1 [4]byte
 20055  	FapSubst     uintptr
 20056  	FapDel       uintptr
 20057  }
 20058  
 20059  type EditDist3From = EditDist3From1
 20060  type EditDist3FromString1 = struct {
 20061  	Fz        uintptr
 20062  	Fn        int32
 20063  	FisPrefix int32
 20064  	Fa        uintptr
 20065  }
 20066  
 20067  type EditDist3FromString = EditDist3FromString1
 20068  type EditDist3To1 = struct {
 20069  	FnIns  int32
 20070  	FnByte int32
 20071  	FapIns uintptr
 20072  }
 20073  
 20074  type EditDist3To = EditDist3To1
 20075  type EditDist3ToString1 = struct {
 20076  	Fz           uintptr
 20077  	Fn           int32
 20078  	F__ccgo_pad1 [4]byte
 20079  	Fa           uintptr
 20080  }
 20081  
 20082  type EditDist3ToString = EditDist3ToString1
 20083  type EditDist3Lang1 = struct {
 20084  	FiLang    int32
 20085  	FiInsCost int32
 20086  	FiDelCost int32
 20087  	FiSubCost int32
 20088  	FpCost    uintptr
 20089  }
 20090  
 20091  type EditDist3Lang = EditDist3Lang1
 20092  
 20093  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 20094  
 20095  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 20096  	var i int32
 20097  	if p == uintptr(0) {
 20098  		return
 20099  	}
 20100  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 20101  		var pCost uintptr
 20102  		var pNext uintptr
 20103  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*24)).FpCost
 20104  		for pCost != 0 {
 20105  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 20106  			sqlite3.Xsqlite3_free(tls, pCost)
 20107  			pCost = pNext
 20108  		}
 20109  	}
 20110  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 20111  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 20112  }
 20113  
 20114  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 20115  	var p uintptr = pIn
 20116  	editDist3ConfigClear(tls, p)
 20117  	sqlite3.Xsqlite3_free(tls, p)
 20118  }
 20119  
 20120  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 20121  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 20122  	var rc int32
 20123  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 20124  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 20125  	}
 20126  	rc = libc.Xstrncmp(tls, pA+12, pB+12, uint64(n))
 20127  	if rc == 0 {
 20128  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 20129  	}
 20130  	return rc
 20131  }
 20132  
 20133  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 20134  	bp := tls.Alloc(8)
 20135  	defer tls.Free(8)
 20136  
 20137  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 20138  	var ppTail uintptr = bp
 20139  	var p uintptr
 20140  	for pA != 0 && pB != 0 {
 20141  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 20142  			p = pA
 20143  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 20144  		} else {
 20145  			p = pB
 20146  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 20147  		}
 20148  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 20149  		ppTail = p
 20150  	}
 20151  	if pA != 0 {
 20152  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 20153  	} else {
 20154  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 20155  	}
 20156  	return *(*uintptr)(unsafe.Pointer(bp))
 20157  }
 20158  
 20159  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 20160  	bp := tls.Alloc(480)
 20161  	defer tls.Free(480)
 20162  
 20163  	var p uintptr
 20164  	var i int32
 20165  	var mx int32 = 0
 20166  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 20167  	*(*uintptr)(unsafe.Pointer(bp + 1*8)) = uintptr(0)
 20168  	for pList != 0 {
 20169  		p = pList
 20170  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20171  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 20172  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0; i++ {
 20173  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), p)
 20174  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = uintptr(0)
 20175  		}
 20176  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = p
 20177  		if i > mx {
 20178  			mx = i
 20179  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*8)) = uintptr(0)
 20180  		}
 20181  	}
 20182  	p = uintptr(0)
 20183  	for i = 0; i <= mx; i++ {
 20184  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0 {
 20185  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))
 20186  		}
 20187  	}
 20188  	return p
 20189  }
 20190  
 20191  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 20192  	bp := tls.Alloc(16)
 20193  	defer tls.Free(16)
 20194  
 20195  	var rc int32
 20196  	var rc2 int32
 20197  	var zSql uintptr
 20198  	var iLangPrev int32 = -9999
 20199  	var pLang uintptr = uintptr(0)
 20200  
 20201  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 20202  		ts+7107, libc.VaList(bp, zTable))
 20203  	if zSql == uintptr(0) {
 20204  		return SQLITE_NOMEM
 20205  	}
 20206  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 20207  	sqlite3.Xsqlite3_free(tls, zSql)
 20208  	if rc != 0 {
 20209  		return rc
 20210  	}
 20211  	editDist3ConfigClear(tls, p)
 20212  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 20213  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 20214  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20215  		var nFrom int32
 20216  		if zFrom != 0 {
 20217  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20218  		} else {
 20219  			nFrom = 0
 20220  		}
 20221  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20222  		var nTo int32
 20223  		if zTo != 0 {
 20224  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20225  		} else {
 20226  			nTo = 0
 20227  		}
 20228  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 20229  
 20230  		if nFrom > 100 || nTo > 100 {
 20231  			continue
 20232  		}
 20233  		if iCost < 0 {
 20234  			continue
 20235  		}
 20236  		if iCost >= 10000 {
 20237  			continue
 20238  		}
 20239  		if pLang == uintptr(0) || iLang != iLangPrev {
 20240  			var pNew uintptr
 20241  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint64(unsafe.Sizeof(EditDist3Lang{})))
 20242  			if pNew == uintptr(0) {
 20243  				rc = SQLITE_NOMEM
 20244  				break
 20245  			}
 20246  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 20247  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*24
 20248  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 20249  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 20250  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 20251  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 20252  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 20253  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 20254  			iLangPrev = iLang
 20255  		}
 20256  		if nFrom == 1 && int32(*(*uint8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 20257  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 20258  		} else if nFrom == 0 && nTo == 1 && int32(*(*uint8)(unsafe.Pointer(zTo))) == '?' {
 20259  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 20260  		} else if nFrom == 1 && nTo == 1 && int32(*(*uint8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*uint8)(unsafe.Pointer(zTo))) == '?' {
 20261  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 20262  		} else {
 20263  			var pCost uintptr
 20264  			var nExtra int32 = nFrom + nTo - 4
 20265  			if nExtra < 0 {
 20266  				nExtra = 0
 20267  			}
 20268  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Cost{}))+uint64(nExtra))
 20269  			if pCost == uintptr(0) {
 20270  				rc = SQLITE_NOMEM
 20271  				break
 20272  			}
 20273  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 20274  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 20275  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 20276  			libc.Xmemcpy(tls, pCost+12, zFrom, uint64(nFrom))
 20277  			libc.Xmemcpy(tls, pCost+12+uintptr(nFrom), zTo, uint64(nTo))
 20278  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20279  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 20280  		}
 20281  	}
 20282  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 20283  	if rc == SQLITE_OK {
 20284  		rc = rc2
 20285  	}
 20286  	if rc == SQLITE_OK {
 20287  		var iLang int32
 20288  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 20289  			(*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)
 20290  		}
 20291  	}
 20292  	return rc
 20293  }
 20294  
 20295  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 20296  	var len int32 = 1
 20297  	if int32(c) > 0x7f {
 20298  		if int32(c)&0xe0 == 0xc0 {
 20299  			len = 2
 20300  		} else if int32(c)&0xf0 == 0xe0 {
 20301  			len = 3
 20302  		} else {
 20303  			len = 4
 20304  		}
 20305  	}
 20306  	if len > N {
 20307  		len = N
 20308  	}
 20309  	return len
 20310  }
 20311  
 20312  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20313  	if int32(*(*uint8)(unsafe.Pointer(p + 12 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*uint8)(unsafe.Pointer(z))) {
 20314  		return 0
 20315  	}
 20316  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 20317  		return 0
 20318  	}
 20319  	if libc.Xstrncmp(tls, p+12+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 20320  		return 0
 20321  	}
 20322  	return 1
 20323  }
 20324  
 20325  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20326  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 20327  		if int32(*(*uint8)(unsafe.Pointer(p + 12))) != int32(*(*uint8)(unsafe.Pointer(z))) {
 20328  			return 0
 20329  		}
 20330  		if libc.Xstrncmp(tls, p+12, z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 20331  			return 0
 20332  		}
 20333  	}
 20334  	return 1
 20335  }
 20336  
 20337  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 20338  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*32)).FnByte
 20339  	if b1 > n2 {
 20340  		return 0
 20341  	}
 20342  
 20343  	if int32(*(*uint8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*uint8)(unsafe.Pointer(z2))) {
 20344  		return 0
 20345  	}
 20346  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint64(b1)) != 0 {
 20347  		return 0
 20348  	}
 20349  	return 1
 20350  }
 20351  
 20352  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 20353  	var i int32
 20354  	if p != 0 {
 20355  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 20356  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapDel)
 20357  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapSubst)
 20358  		}
 20359  		sqlite3.Xsqlite3_free(tls, p)
 20360  	}
 20361  }
 20362  
 20363  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 20364  	var pStr uintptr
 20365  	var p uintptr
 20366  	var i int32
 20367  
 20368  	if z == uintptr(0) {
 20369  		return uintptr(0)
 20370  	}
 20371  	if n < 0 {
 20372  		n = int32(libc.Xstrlen(tls, z))
 20373  	}
 20374  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3FromString{}))+uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n)+uint64(n)+uint64(1))
 20375  	if pStr == uintptr(0) {
 20376  		return uintptr(0)
 20377  	}
 20378  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*24
 20379  	libc.Xmemset(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n))
 20380  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 20381  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*32
 20382  	libc.Xmemcpy(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint64(n+1))
 20383  	if n != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 20384  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 20385  		n--
 20386  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 20387  		*(*uint8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = uint8(0)
 20388  	} else {
 20389  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 20390  	}
 20391  
 20392  	for i = 0; i < n; i++ {
 20393  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*32
 20394  		libc.Xmemset(tls, pFrom, 0, uint64(unsafe.Sizeof(EditDist3From{})))
 20395  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, *(*uint8)(unsafe.Pointer(z + uintptr(i))), n-i)
 20396  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 20397  			var apNew uintptr
 20398  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 20399  				continue
 20400  			}
 20401  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 20402  				continue
 20403  			}
 20404  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 20405  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 20406  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1))
 20407  				if apNew == uintptr(0) {
 20408  					break
 20409  				}
 20410  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 20411  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*8)) = p
 20412  			} else {
 20413  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 20414  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1))
 20415  				if apNew == uintptr(0) {
 20416  					break
 20417  				}
 20418  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 20419  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*8)) = p
 20420  			}
 20421  		}
 20422  		if p != 0 {
 20423  			editDist3FromStringDelete(tls, pStr)
 20424  			pStr = uintptr(0)
 20425  			break
 20426  		}
 20427  	}
 20428  	return pStr
 20429  }
 20430  
 20431  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 20432  	var b uint32
 20433  
 20434  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 20435  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 20436  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 20437  	}
 20438  }
 20439  
 20440  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 20441  	bp := tls.Alloc(1048)
 20442  	defer tls.Free(1048)
 20443  
 20444  	var k int32
 20445  	var n int32
 20446  	var i1 int32
 20447  	var b1 int32
 20448  	var i2 int32
 20449  	var b2 int32
 20450  
 20451  	var a2 uintptr
 20452  	var m uintptr
 20453  	var pToFree uintptr
 20454  	var szRow int32
 20455  	var p uintptr
 20456  	var res int32
 20457  	var nByte sqlite3_uint64
 20458  
 20459  	var apNew uintptr
 20460  	var cx int32
 20461  	var cxp int32
 20462  	var cxd int32
 20463  	var cxu int32
 20464  	var rx int32
 20465  	var rxp int32
 20466  	var b int32
 20467  	var nExtra int32
 20468  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 20469  
 20470  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 20471  	n = (n + 1) & libc.CplInt32(1)
 20472  	nByte = uint64(n)*uint64(unsafe.Sizeof(uint32(0))) + uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2)
 20473  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 20474  		goto __1
 20475  	}
 20476  	m = bp
 20477  	pToFree = uintptr(0)
 20478  	goto __2
 20479  __1:
 20480  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 20481  	if !(m == uintptr(0)) {
 20482  		goto __3
 20483  	}
 20484  	return -1
 20485  __3:
 20486  	;
 20487  __2:
 20488  	;
 20489  	a2 = m + uintptr(n)*4
 20490  	libc.Xmemset(tls, a2, 0, uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2))
 20491  
 20492  	i2 = 0
 20493  __4:
 20494  	if !(i2 < n2) {
 20495  		goto __6
 20496  	}
 20497  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte = utf8Len(tls, *(*uint8)(unsafe.Pointer(z2 + uintptr(i2))), n2-i2)
 20498  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20499  __7:
 20500  	if !(p != 0) {
 20501  		goto __9
 20502  	}
 20503  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 20504  		goto __10
 20505  	}
 20506  	goto __9
 20507  __10:
 20508  	;
 20509  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 20510  		goto __11
 20511  	}
 20512  	goto __8
 20513  __11:
 20514  	;
 20515  	if !(int32(*(*uint8)(unsafe.Pointer(p + 12))) > int32(*(*uint8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 20516  		goto __12
 20517  	}
 20518  	goto __9
 20519  __12:
 20520  	;
 20521  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 20522  		goto __13
 20523  	}
 20524  	goto __8
 20525  __13:
 20526  	;
 20527  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns++
 20528  	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))
 20529  	if !(apNew == uintptr(0)) {
 20530  		goto __14
 20531  	}
 20532  	res = -1
 20533  	goto editDist3Abort
 20534  __14:
 20535  	;
 20536  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FapIns = apNew
 20537  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns-1)*8)) = p
 20538  	goto __8
 20539  __8:
 20540  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20541  	goto __7
 20542  	goto __9
 20543  __9:
 20544  	;
 20545  	goto __5
 20546  __5:
 20547  	i2++
 20548  	goto __4
 20549  	goto __6
 20550  __6:
 20551  	;
 20552  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 20553  	libc.Xmemset(tls, m, 0x01, uint64((n2+1)*szRow)*uint64(unsafe.Sizeof(uint32(0))))
 20554  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 20555  
 20556  	i1 = 0
 20557  __15:
 20558  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20559  		goto __17
 20560  	}
 20561  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 20562  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20563  	k = 0
 20564  __18:
 20565  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 20566  		goto __20
 20567  	}
 20568  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 20569  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20570  	goto __19
 20571  __19:
 20572  	k++
 20573  	goto __18
 20574  	goto __20
 20575  __20:
 20576  	;
 20577  	goto __16
 20578  __16:
 20579  	i1 = i1 + b1
 20580  	goto __15
 20581  	goto __17
 20582  __17:
 20583  	;
 20584  	i2 = 0
 20585  __21:
 20586  	if !(i2 < n2) {
 20587  		goto __23
 20588  	}
 20589  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte
 20590  	rx = szRow * (i2 + b2)
 20591  	rxp = szRow * i2
 20592  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20593  	k = 0
 20594  __24:
 20595  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns) {
 20596  		goto __26
 20597  	}
 20598  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr(k)*8))
 20599  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20600  	goto __25
 20601  __25:
 20602  	k++
 20603  	goto __24
 20604  	goto __26
 20605  __26:
 20606  	;
 20607  	i1 = 0
 20608  __27:
 20609  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20610  		goto __29
 20611  	}
 20612  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 20613  	cxp = rx + i1
 20614  	cx = cxp + b1
 20615  	cxd = rxp + i1
 20616  	cxu = cxd + b1
 20617  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20618  	k = 0
 20619  __30:
 20620  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 20621  		goto __32
 20622  	}
 20623  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 20624  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20625  	goto __31
 20626  __31:
 20627  	k++
 20628  	goto __30
 20629  	goto __32
 20630  __32:
 20631  	;
 20632  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20633  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 20634  		goto __33
 20635  	}
 20636  	updateCost(tls, m, cx, cxd, 0)
 20637  __33:
 20638  	;
 20639  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 20640  	k = 0
 20641  __34:
 20642  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnSubst) {
 20643  		goto __36
 20644  	}
 20645  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapSubst + uintptr(k)*8))
 20646  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 20647  		goto __37
 20648  	}
 20649  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20650  __37:
 20651  	;
 20652  	goto __35
 20653  __35:
 20654  	k++
 20655  	goto __34
 20656  	goto __36
 20657  __36:
 20658  	;
 20659  	goto __28
 20660  __28:
 20661  	i1 = i1 + b1
 20662  	goto __27
 20663  	goto __29
 20664  __29:
 20665  	;
 20666  	goto __22
 20667  __22:
 20668  	i2 = i2 + b2
 20669  	goto __21
 20670  	goto __23
 20671  __23:
 20672  	;
 20673  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 20674  	n = n2
 20675  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 20676  		goto __38
 20677  	}
 20678  	i2 = 1
 20679  __39:
 20680  	if !(i2 <= n2) {
 20681  		goto __41
 20682  	}
 20683  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 20684  	if !(b <= res) {
 20685  		goto __42
 20686  	}
 20687  	res = b
 20688  	n = i2 - 1
 20689  __42:
 20690  	;
 20691  	goto __40
 20692  __40:
 20693  	i2++
 20694  	goto __39
 20695  	goto __41
 20696  __41:
 20697  	;
 20698  __38:
 20699  	;
 20700  	if !(pnMatch != 0) {
 20701  		goto __43
 20702  	}
 20703  	nExtra = 0
 20704  	k = 0
 20705  __44:
 20706  	if !(k < n) {
 20707  		goto __46
 20708  	}
 20709  	if !(int32(*(*uint8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 20710  		goto __47
 20711  	}
 20712  	nExtra++
 20713  __47:
 20714  	;
 20715  	goto __45
 20716  __45:
 20717  	k++
 20718  	goto __44
 20719  	goto __46
 20720  __46:
 20721  	;
 20722  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 20723  __43:
 20724  	;
 20725  editDist3Abort:
 20726  	i2 = 0
 20727  __48:
 20728  	if !(i2 < n2) {
 20729  		goto __50
 20730  	}
 20731  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns)
 20732  	goto __49
 20733  __49:
 20734  	i2++
 20735  	goto __48
 20736  	goto __50
 20737  __50:
 20738  	;
 20739  	sqlite3.Xsqlite3_free(tls, pToFree)
 20740  	return res
 20741  }
 20742  
 20743  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 20744  	var i int32
 20745  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 20746  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*24)).FiLang == iLang {
 20747  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*24
 20748  		}
 20749  	}
 20750  	return uintptr(unsafe.Pointer(&editDist3Lang))
 20751  }
 20752  
 20753  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20754  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 20755  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 20756  	var rc int32
 20757  	if argc == 1 {
 20758  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20759  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 20760  		if rc != 0 {
 20761  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 20762  		}
 20763  	} else {
 20764  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20765  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20766  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20767  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20768  		var iLang int32
 20769  		if argc == 3 {
 20770  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 20771  		} else {
 20772  			iLang = 0
 20773  		}
 20774  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 20775  		var pFrom uintptr
 20776  		var dist int32
 20777  
 20778  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 20779  		if pFrom == uintptr(0) {
 20780  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20781  			return
 20782  		}
 20783  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 20784  		editDist3FromStringDelete(tls, pFrom)
 20785  		if dist == -1 {
 20786  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20787  		} else {
 20788  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 20789  		}
 20790  	}
 20791  }
 20792  
 20793  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 20794  	var rc int32
 20795  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 20796  	if pConfig == uintptr(0) {
 20797  		return SQLITE_NOMEM
 20798  	}
 20799  	libc.Xmemset(tls, pConfig, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 20800  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20801  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20802  		*(*uintptr)(unsafe.Pointer(&struct {
 20803  			f func(*libc.TLS, uintptr, int32, uintptr)
 20804  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20805  	if rc == SQLITE_OK {
 20806  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20807  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20808  			*(*uintptr)(unsafe.Pointer(&struct {
 20809  				f func(*libc.TLS, uintptr, int32, uintptr)
 20810  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20811  	}
 20812  	if rc == SQLITE_OK {
 20813  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20814  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20815  			*(*uintptr)(unsafe.Pointer(&struct {
 20816  				f func(*libc.TLS, uintptr, int32, uintptr)
 20817  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 20818  	} else {
 20819  		sqlite3.Xsqlite3_free(tls, pConfig)
 20820  	}
 20821  	return rc
 20822  }
 20823  
 20824  var sqlite3Utf8Trans1 = [64]uint8{
 20825  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20826  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20827  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 20828  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 20829  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20830  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20831  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20832  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 20833  }
 20834  
 20835  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 20836  	var c int32
 20837  	var i int32
 20838  
 20839  	if 0 != 0 {
 20840  		c = libc.AssignInt32(&i, 0)
 20841  	} else {
 20842  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 20843  		i = 1
 20844  		if c >= 0xc0 {
 20845  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 20846  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 20847  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 20848  			}
 20849  		}
 20850  	}
 20851  	*(*int32)(unsafe.Pointer(pSize)) = i
 20852  	return c
 20853  }
 20854  
 20855  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 20856  	bp := tls.Alloc(4)
 20857  	defer tls.Free(4)
 20858  
 20859  	var i int32
 20860  	var nChar int32 = 0
 20861  	for i = 0; i < nIn; nChar++ {
 20862  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20863  		i = i + *(*int32)(unsafe.Pointer(bp))
 20864  	}
 20865  	return nChar
 20866  }
 20867  
 20868  type Transliteration1 = struct {
 20869  	FcFrom uint16
 20870  	FcTo0  uint8
 20871  	FcTo1  uint8
 20872  	FcTo2  uint8
 20873  	FcTo3  uint8
 20874  }
 20875  
 20876  type Transliteration = Transliteration1
 20877  
 20878  var translit = [389]Transliteration{
 20879  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 20880  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 20881  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 20882  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 20883  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 20884  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 20885  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 20886  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 20887  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 20888  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 20889  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 20890  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 20891  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 20892  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 20893  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 20894  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 20895  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 20896  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 20897  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 20898  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 20899  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 20900  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 20901  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 20902  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 20903  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 20904  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 20905  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 20906  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 20907  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 20908  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 20909  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 20910  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 20911  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20912  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 20913  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 20914  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 20915  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 20916  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 20917  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20918  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 20919  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20920  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 20921  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 20922  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 20923  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 20924  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 20925  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 20926  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 20927  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 20928  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 20929  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 20930  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 20931  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 20932  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 20933  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 20934  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 20935  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20936  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 20937  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 20938  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 20939  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 20940  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 20941  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 20942  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 20943  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20944  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 20945  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 20946  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 20947  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 20948  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 20949  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 20950  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 20951  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 20952  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 20953  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20954  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20955  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 20956  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 20957  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 20958  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 20959  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 20960  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 20961  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 20962  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 20963  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 20964  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 20965  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 20966  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 20967  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 20968  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 20969  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 20970  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 20971  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 20972  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 20973  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 20974  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 20975  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 20976  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 20977  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 20978  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 20979  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 20980  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 20981  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 20982  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 20983  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 20984  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 20985  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 20986  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 20987  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 20988  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 20989  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 20990  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 20991  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 20992  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 20993  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 20994  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 20995  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 20996  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 20997  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 20998  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 20999  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 21000  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 21001  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 21002  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 21003  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 21004  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 21005  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 21006  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 21007  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 21008  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 21009  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 21010  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 21011  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 21012  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 21013  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 21014  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 21015  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 21016  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 21017  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 21018  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 21019  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 21020  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 21021  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 21022  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 21023  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 21024  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 21025  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 21026  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 21027  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 21028  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 21029  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 21030  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 21031  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 21032  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 21033  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 21034  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 21035  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 21036  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 21037  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 21038  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 21039  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 21040  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 21041  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 21042  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 21043  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 21044  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 21045  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 21046  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 21047  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 21048  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 21049  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 21050  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 21051  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 21052  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 21053  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 21054  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 21055  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 21056  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 21057  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 21058  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 21059  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 21060  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 21061  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 21062  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 21063  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 21064  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 21065  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 21066  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 21067  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 21068  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 21069  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 21070  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 21071  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 21072  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 21073  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 21074  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 21075  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 21076  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 21077  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 21078  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 21079  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 21080  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 21081  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 21082  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 21083  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 21084  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 21085  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 21086  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 21087  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 21088  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 21089  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 21090  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 21091  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 21092  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 21093  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 21094  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 21095  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 21096  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 21097  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 21098  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 21099  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 21100  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 21101  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 21102  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 21103  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 21104  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 21105  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 21106  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 21107  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21108  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 21109  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 21110  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 21111  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 21112  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 21113  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 21114  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 21115  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 21116  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 21117  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 21118  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 21119  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 21120  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 21121  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 21122  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 21123  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 21124  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 21125  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 21126  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 21127  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 21128  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 21129  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 21130  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 21131  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 21132  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 21133  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 21134  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 21135  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 21136  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 21137  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21138  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 21139  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 21140  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 21141  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 21142  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 21143  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 21144  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 21145  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 21146  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 21147  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 21148  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 21149  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 21150  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 21151  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 21152  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 21153  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 21154  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 21155  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 21156  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 21157  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 21158  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 21159  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 21160  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 21161  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 21162  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 21163  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 21164  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 21165  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 21166  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 21167  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 21168  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 21169  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 21170  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 21171  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 21172  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 21173  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 21174  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 21175  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 21176  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 21177  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 21178  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 21179  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 21180  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 21181  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 21182  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 21183  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 21184  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21185  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 21186  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21187  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 21188  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 21189  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 21190  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 21191  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 21192  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 21193  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 21194  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 21195  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 21196  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 21197  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 21198  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 21199  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 21200  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 21201  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 21202  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 21203  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 21204  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 21205  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 21206  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 21207  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 21208  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 21209  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 21210  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 21211  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 21212  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 21213  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 21214  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 21215  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 21216  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21217  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 21218  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21219  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 21220  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 21221  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 21222  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 21223  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 21224  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 21225  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 21226  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 21227  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 21228  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 21229  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 21230  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 21231  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 21232  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 21233  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 21234  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 21235  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 21236  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 21237  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 21238  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 21239  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 21240  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 21241  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 21242  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 21243  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 21244  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 21245  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 21246  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 21247  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 21248  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 21249  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 21250  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 21251  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 21252  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 21253  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 21254  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 21255  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 21256  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 21257  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 21258  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 21259  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 21260  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 21261  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 21262  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 21263  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 21264  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 21265  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 21266  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21267  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21268  }
 21269  
 21270  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 21271  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{})) - uint64(1))
 21272  	return uintptr(unsafe.Pointer(&translit))
 21273  }
 21274  
 21275  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 21276  	bp := tls.Alloc(8)
 21277  	defer tls.Free(8)
 21278  
 21279  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 21280  	var c int32
 21281  
 21282  	var nOut int32
 21283  	if zOut == uintptr(0) {
 21284  		return uintptr(0)
 21285  	}
 21286  	nOut = 0
 21287  	for nIn > 0 {
 21288  		c = utf8Read(tls, zIn, nIn, bp)
 21289  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21290  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21291  		if c <= 127 {
 21292  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 21293  		} else {
 21294  			var xBtm int32
 21295  			var x int32
 21296  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21297  			xBtm = 0
 21298  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21299  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21300  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21301  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 21302  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21303  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 21304  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21305  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 21306  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21307  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 21308  							}
 21309  						}
 21310  					}
 21311  					c = 0
 21312  					break
 21313  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21314  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21315  				} else {
 21316  					xBtm = x + 1
 21317  				}
 21318  			}
 21319  			if c != 0 {
 21320  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 21321  			}
 21322  		}
 21323  	}
 21324  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 21325  	return zOut
 21326  }
 21327  
 21328  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 21329  	bp := tls.Alloc(8)
 21330  	defer tls.Free(8)
 21331  
 21332  	var i int32
 21333  	var c int32
 21334  
 21335  	var nOut int32
 21336  	var nChar int32
 21337  
 21338  	i = libc.AssignInt32(&nOut, 0)
 21339  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 21340  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 21341  		i = i + *(*int32)(unsafe.Pointer(bp))
 21342  
 21343  		nOut++
 21344  		if c >= 128 {
 21345  			var xBtm int32
 21346  			var x int32
 21347  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21348  			xBtm = 0
 21349  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21350  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21351  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21352  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21353  						nOut++
 21354  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21355  							nOut++
 21356  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21357  								nOut++
 21358  							}
 21359  						}
 21360  					}
 21361  					break
 21362  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21363  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21364  				} else {
 21365  					xBtm = x + 1
 21366  				}
 21367  			}
 21368  		}
 21369  	}
 21370  
 21371  	return nChar
 21372  }
 21373  
 21374  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21375  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21376  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21377  	var zOut uintptr = transliterate(tls, zIn, nIn)
 21378  	if zOut == uintptr(0) {
 21379  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21380  	} else {
 21381  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 21382  	}
 21383  }
 21384  
 21385  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21386  	bp := tls.Alloc(4)
 21387  	defer tls.Free(4)
 21388  
 21389  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21390  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21391  	var c int32
 21392  
 21393  	var scriptMask int32 = 0
 21394  	var res int32
 21395  	var seenDigit int32 = 0
 21396  
 21397  	for nIn > 0 {
 21398  		c = utf8Read(tls, zIn, nIn, bp)
 21399  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21400  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21401  		if c < 0x02af {
 21402  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 21403  				scriptMask = scriptMask | SCRIPT_LATIN
 21404  			} else if c >= '0' && c <= '9' {
 21405  				seenDigit = 1
 21406  			}
 21407  		} else if c >= 0x0400 && c <= 0x04ff {
 21408  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 21409  		} else if c >= 0x0386 && c <= 0x03ce {
 21410  			scriptMask = scriptMask | SCRIPT_GREEK
 21411  		} else if c >= 0x0590 && c <= 0x05ff {
 21412  			scriptMask = scriptMask | SCRIPT_HEBREW
 21413  		} else if c >= 0x0600 && c <= 0x06ff {
 21414  			scriptMask = scriptMask | SCRIPT_ARABIC
 21415  		}
 21416  	}
 21417  	if scriptMask == 0 && seenDigit != 0 {
 21418  		scriptMask = SCRIPT_LATIN
 21419  	}
 21420  	switch scriptMask {
 21421  	case 0:
 21422  		res = 999
 21423  		break
 21424  	case SCRIPT_LATIN:
 21425  		res = 215
 21426  		break
 21427  	case SCRIPT_CYRILLIC:
 21428  		res = 220
 21429  		break
 21430  	case SCRIPT_GREEK:
 21431  		res = 200
 21432  		break
 21433  	case SCRIPT_HEBREW:
 21434  		res = 125
 21435  		break
 21436  	case SCRIPT_ARABIC:
 21437  		res = 160
 21438  		break
 21439  	default:
 21440  		res = 998
 21441  		break
 21442  	}
 21443  	sqlite3.Xsqlite3_result_int(tls, context, res)
 21444  }
 21445  
 21446  type spellfix1_vtab1 = struct {
 21447  	Fbase       sqlite3_vtab
 21448  	Fdb         uintptr
 21449  	FzDbName    uintptr
 21450  	FzTableName uintptr
 21451  	FzCostTable uintptr
 21452  	FpConfig3   uintptr
 21453  }
 21454  
 21455  type spellfix1_vtab = spellfix1_vtab1
 21456  type spellfix1_cursor1 = struct {
 21457  	Fbase      sqlite3_vtab_cursor
 21458  	FpVTab     uintptr
 21459  	FzPattern  uintptr
 21460  	FidxNum    int32
 21461  	FnRow      int32
 21462  	FnAlloc    int32
 21463  	FiRow      int32
 21464  	FiLang     int32
 21465  	FiTop      int32
 21466  	FiScope    int32
 21467  	FnSearch   int32
 21468  	FpFullScan uintptr
 21469  	Fa         uintptr
 21470  }
 21471  
 21472  type spellfix1_cursor = spellfix1_cursor1
 21473  
 21474  type spellfix1_row = struct {
 21475  	FiRowid    sqlite3_int64
 21476  	FzWord     uintptr
 21477  	FiRank     int32
 21478  	FiDistance int32
 21479  	FiScore    int32
 21480  	FiMatchlen int32
 21481  	FzHash     [32]uint8
 21482  }
 21483  
 21484  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 21485  	var ap va_list
 21486  	_ = ap
 21487  	var zSql uintptr
 21488  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 21489  		return
 21490  	}
 21491  	ap = va
 21492  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 21493  	_ = ap
 21494  	if zSql == uintptr(0) {
 21495  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 21496  	} else {
 21497  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 21498  		sqlite3.Xsqlite3_free(tls, zSql)
 21499  	}
 21500  }
 21501  
 21502  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 21503  	bp := tls.Alloc(20)
 21504  	defer tls.Free(20)
 21505  
 21506  	var p uintptr = pVTab
 21507  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 21508  	if isDestroy != 0 {
 21509  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21510  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 21511  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 21512  	}
 21513  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 21514  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 21515  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21516  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21517  		sqlite3.Xsqlite3_free(tls, p)
 21518  	}
 21519  	return *(*int32)(unsafe.Pointer(bp + 16))
 21520  }
 21521  
 21522  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 21523  	return spellfix1Uninit(tls, 0, pVTab)
 21524  }
 21525  
 21526  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 21527  	return spellfix1Uninit(tls, 1, pVTab)
 21528  }
 21529  
 21530  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 21531  	bp := tls.Alloc(8)
 21532  	defer tls.Free(8)
 21533  
 21534  	var zOut uintptr
 21535  	var i int32
 21536  	var j int32
 21537  	var c uint8
 21538  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zIn))))*2)))&int32(_ISspace) != 0 {
 21539  		zIn++
 21540  	}
 21541  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 21542  	if zOut == uintptr(0) {
 21543  		return uintptr(0)
 21544  	}
 21545  	i = int32(libc.Xstrlen(tls, zOut))
 21546  	*(*uint8)(unsafe.Pointer(zOut + uintptr(i))) = uint8(0)
 21547  	c = *(*uint8)(unsafe.Pointer(zOut))
 21548  	if int32(c) == '\'' || int32(c) == '"' {
 21549  		i = 1
 21550  		j = 0
 21551  		for ; 1 != 0; i++ {
 21552  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(zOut + uintptr(i)))
 21553  			if int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 21554  				if int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 21555  					i++
 21556  				} else {
 21557  					*(*uint8)(unsafe.Pointer(zOut + uintptr(j-1))) = uint8(0)
 21558  					break
 21559  				}
 21560  			}
 21561  		}
 21562  	}
 21563  	return zOut
 21564  }
 21565  
 21566  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21567  	bp := tls.Alloc(60)
 21568  	defer tls.Free(60)
 21569  
 21570  	var pNew uintptr = uintptr(0)
 21571  
 21572  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 21573  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 21574  	var nDbName int32
 21575  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 21576  	var i int32
 21577  
 21578  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 21579  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_vtab{}))+uint64(nDbName)+uint64(1))
 21580  	if pNew == uintptr(0) {
 21581  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21582  	} else {
 21583  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(spellfix1_vtab{})))
 21584  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*64
 21585  		libc.Xmemcpy(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint64(nDbName+1))
 21586  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 21587  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 21588  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 21589  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21590  		} else {
 21591  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 21592  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 21593  				ts+7226)
 21594  		}
 21595  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 21596  			spellfix1DbExec(tls, bp+56, db,
 21597  				ts+7380,
 21598  				libc.VaList(bp+8, zDbName, zTableName))
 21599  			spellfix1DbExec(tls, bp+56, db,
 21600  				ts+7514,
 21601  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 21602  		}
 21603  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 21604  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+7599, uint64(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21605  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))+16)
 21606  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21607  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21608  				}
 21609  				continue
 21610  			}
 21611  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 21612  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 21613  		}
 21614  	}
 21615  
 21616  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 21617  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 21618  		spellfix1Uninit(tls, 0, pNew)
 21619  	} else {
 21620  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 21621  	}
 21622  	return *(*int32)(unsafe.Pointer(bp + 56))
 21623  }
 21624  
 21625  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21626  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 21627  }
 21628  
 21629  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21630  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 21631  }
 21632  
 21633  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 21634  	var i int32
 21635  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21636  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*64)).FzWord)
 21637  	}
 21638  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 21639  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21640  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 21641  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21642  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21643  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 21644  	}
 21645  }
 21646  
 21647  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 21648  	var aNew uintptr
 21649  
 21650  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(unsafe.Sizeof(spellfix1_row{}))*uint64(N))
 21651  	if aNew == uintptr(0) && N > 0 {
 21652  		spellfix1ResetCursor(tls, pCur)
 21653  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 21654  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 21655  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 21656  	} else {
 21657  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 21658  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 21659  	}
 21660  }
 21661  
 21662  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 21663  	var pCur uintptr = cur
 21664  	spellfix1ResetCursor(tls, pCur)
 21665  	spellfix1ResizeCursor(tls, pCur, 0)
 21666  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21667  	sqlite3.Xsqlite3_free(tls, pCur)
 21668  	return SQLITE_OK
 21669  }
 21670  
 21671  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 21672  	var iPlan int32 = 0
 21673  	var iLangTerm int32 = -1
 21674  	var iTopTerm int32 = -1
 21675  	var iScopeTerm int32 = -1
 21676  	var iDistTerm int32 = -1
 21677  	var iRowidTerm int32 = -1
 21678  	var i int32
 21679  	var pConstraint uintptr
 21680  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 21681  	i = 0
 21682  __1:
 21683  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 21684  		goto __3
 21685  	}
 21686  	{
 21687  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 21688  			goto __2
 21689  		}
 21690  
 21691  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 21692  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 21693  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 21694  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 21695  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 21696  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 21697  		}
 21698  
 21699  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 21700  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 21701  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21702  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 21703  			iLangTerm = i
 21704  		}
 21705  
 21706  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 21707  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 21708  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21709  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 21710  			iTopTerm = i
 21711  		}
 21712  
 21713  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 21714  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 21715  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21716  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 21717  			iScopeTerm = i
 21718  		}
 21719  
 21720  		if iPlan&(0x10|0x20) == 0 &&
 21721  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 21722  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 21723  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 21724  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 21725  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 21726  			} else {
 21727  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 21728  			}
 21729  			iDistTerm = i
 21730  		}
 21731  
 21732  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 21733  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 21734  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21735  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 21736  			iRowidTerm = i
 21737  		}
 21738  
 21739  	}
 21740  	goto __2
 21741  __2:
 21742  	i++
 21743  	pConstraint += 12
 21744  	goto __1
 21745  	goto __3
 21746  __3:
 21747  	;
 21748  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 21749  		var idx int32 = 2
 21750  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 21751  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 21752  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 21753  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 21754  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 21755  		}
 21756  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 21757  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21758  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 21759  		}
 21760  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 21761  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21762  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 21763  		}
 21764  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 21765  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21766  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 21767  		}
 21768  		if iPlan&(0x10|0x20) != 0 {
 21769  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21770  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 21771  		}
 21772  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 21773  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 21774  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 21775  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 21776  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 21777  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 21778  	} else {
 21779  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 21780  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 21781  	}
 21782  	return SQLITE_OK
 21783  }
 21784  
 21785  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 21786  	var p uintptr = pVTab
 21787  	var pCur uintptr
 21788  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21789  	if pCur == uintptr(0) {
 21790  		return SQLITE_NOMEM
 21791  	}
 21792  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21793  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 21794  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 21795  	return SQLITE_OK
 21796  }
 21797  
 21798  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 21799  	var iLog2 int32
 21800  	iLog2 = 0
 21801  __1:
 21802  	if !(iRank > 0) {
 21803  		goto __3
 21804  	}
 21805  	{
 21806  	}
 21807  	goto __2
 21808  __2:
 21809  	iLog2++
 21810  	iRank >>= 1
 21811  	goto __1
 21812  	goto __3
 21813  __3:
 21814  	;
 21815  	return iDistance + 32 - iLog2
 21816  }
 21817  
 21818  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 21819  	var a uintptr = A
 21820  	var b uintptr = B
 21821  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 21822  }
 21823  
 21824  type MatchQuery1 = struct {
 21825  	FpCur        uintptr
 21826  	FpStmt       uintptr
 21827  	FzHash       [32]uint8
 21828  	FzPattern    uintptr
 21829  	FnPattern    int32
 21830  	F__ccgo_pad1 [4]byte
 21831  	FpMatchStr3  uintptr
 21832  	FpConfig3    uintptr
 21833  	FpLang       uintptr
 21834  	FiLang       int32
 21835  	FiScope      int32
 21836  	FiMaxDist    int32
 21837  	Frc          int32
 21838  	FnRun        int32
 21839  	FazPrior     [1][32]uint8
 21840  	F__ccgo_pad2 [4]byte
 21841  }
 21842  
 21843  type MatchQuery = MatchQuery1
 21844  
 21845  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 21846  	bp := tls.Alloc(76)
 21847  	defer tls.Free(76)
 21848  
 21849  	var zK1 uintptr
 21850  	var zWord uintptr
 21851  	var iDist int32
 21852  	var iRank int32
 21853  	var iScore int32
 21854  	var iWorst int32 = 0
 21855  	var idx int32
 21856  	var idxWorst int32 = -1
 21857  	var i int32
 21858  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 21859  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 21860  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 21861  
 21862  	var zClass uintptr
 21863  	var nClass int32
 21864  	var rc int32
 21865  
 21866  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 21867  		return
 21868  	}
 21869  	zClass = phoneticHash(tls, zQuery, nQuery)
 21870  	if zClass == uintptr(0) {
 21871  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21872  		return
 21873  	}
 21874  	nClass = int32(libc.Xstrlen(tls, zClass))
 21875  	if nClass > SPELLFIX_MX_HASH-2 {
 21876  		nClass = SPELLFIX_MX_HASH - 2
 21877  		*(*uint8)(unsafe.Pointer(zClass + uintptr(nClass))) = uint8(0)
 21878  	}
 21879  	if nClass <= iScope {
 21880  		if nClass > 2 {
 21881  			iScope = nClass - 1
 21882  		} else {
 21883  			iScope = nClass
 21884  		}
 21885  	}
 21886  	libc.Xmemcpy(tls, bp+8, zClass, uint64(iScope))
 21887  	sqlite3.Xsqlite3_free(tls, zClass)
 21888  	*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = uint8(0)
 21889  	libc.Xmemcpy(tls, bp+40, bp+8, uint64(iScope))
 21890  	*(*uint8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = uint8('Z')
 21891  	*(*uint8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = uint8(0)
 21892  
 21893  	libc.Xmemcpy(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint64(iScope+1))
 21894  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 21895  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 21896  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21897  		return
 21898  	}
 21899  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 21900  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 21901  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 21902  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 21903  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 21904  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 21905  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 21906  		} else {
 21907  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 21908  			if zK1 == uintptr(0) {
 21909  				continue
 21910  			}
 21911  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 21912  		}
 21913  		if iDist < 0 {
 21914  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21915  			break
 21916  		}
 21917  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 21918  
 21919  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 21920  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 21921  				continue
 21922  			}
 21923  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 21924  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 21925  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 21926  					break
 21927  				}
 21928  			}
 21929  		}
 21930  
 21931  		iScore = spellfix1Score(tls, iDist, iRank)
 21932  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21933  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21934  		} else if iScore < iWorst {
 21935  			idx = idxWorst
 21936  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord)
 21937  		} else {
 21938  			continue
 21939  		}
 21940  
 21941  		(*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)))
 21942  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord == uintptr(0) {
 21943  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21944  			break
 21945  		}
 21946  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 21947  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRank = iRank
 21948  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiDistance = iDist
 21949  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiScore = iScore
 21950  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 21951  		libc.Xmemcpy(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, bp+8, uint64(iScope+1))
 21952  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21953  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 21954  		}
 21955  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21956  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 21957  			idxWorst = 0
 21958  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21959  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*64)).FiScore
 21960  				if iWorst < iScore {
 21961  					iWorst = iScore
 21962  					idxWorst = i
 21963  				}
 21964  			}
 21965  		}
 21966  	}
 21967  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 21968  	if rc != 0 {
 21969  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 21970  	}
 21971  }
 21972  
 21973  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21974  	bp := tls.Alloc(176)
 21975  	defer tls.Free(176)
 21976  
 21977  	var idxNum int32
 21978  	var zMatchThis uintptr
 21979  	var pMatchStr3 uintptr
 21980  	var zPattern uintptr
 21981  	var nPattern int32
 21982  	var iLimit int32
 21983  	var iScope int32
 21984  	var iLang int32
 21985  	var zSql uintptr
 21986  
 21987  	var rc int32
 21988  	var idx int32
 21989  	var p uintptr
 21990  
 21991  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21992  	pMatchStr3 = uintptr(0)
 21993  	iLimit = 20
 21994  	iScope = 3
 21995  	iLang = 0
 21996  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21997  	idx = 1
 21998  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21999  
 22000  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 22001  		goto __1
 22002  	}
 22003  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 22004  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 22005  		goto __2
 22006  	}
 22007  	return SQLITE_NOMEM
 22008  __2:
 22009  	;
 22010  	libc.Xmemset(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 22011  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22012  	if !(rc != 0) {
 22013  		goto __3
 22014  	}
 22015  	return rc
 22016  __3:
 22017  	;
 22018  __1:
 22019  	;
 22020  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(MatchQuery{})))
 22021  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 22022  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 22023  
 22024  	if !(idxNum&2 != 0) {
 22025  		goto __4
 22026  	}
 22027  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22028  __4:
 22029  	;
 22030  	if !(idxNum&4 != 0) {
 22031  		goto __5
 22032  	}
 22033  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22034  	if !(iLimit < 1) {
 22035  		goto __6
 22036  	}
 22037  	iLimit = 1
 22038  __6:
 22039  	;
 22040  __5:
 22041  	;
 22042  	if !(idxNum&8 != 0) {
 22043  		goto __7
 22044  	}
 22045  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22046  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 22047  		goto __8
 22048  	}
 22049  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 22050  __8:
 22051  	;
 22052  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 22053  		goto __9
 22054  	}
 22055  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 22056  __9:
 22057  	;
 22058  __7:
 22059  	;
 22060  	if !(idxNum&(16|32) != 0) {
 22061  		goto __10
 22062  	}
 22063  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 22064  	if !(idxNum&16 != 0) {
 22065  		goto __11
 22066  	}
 22067  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 22068  __11:
 22069  	;
 22070  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 22071  		goto __12
 22072  	}
 22073  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 22074  __12:
 22075  	;
 22076  __10:
 22077  	;
 22078  	spellfix1ResetCursor(tls, pCur)
 22079  	spellfix1ResizeCursor(tls, pCur, iLimit)
 22080  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22081  	if !(zMatchThis == uintptr(0)) {
 22082  		goto __13
 22083  	}
 22084  	return SQLITE_OK
 22085  __13:
 22086  	;
 22087  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 22088  		goto __14
 22089  	}
 22090  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 22091  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 22092  	if !(pMatchStr3 == uintptr(0)) {
 22093  		goto __16
 22094  	}
 22095  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22096  	goto filter_exit
 22097  __16:
 22098  	;
 22099  	goto __15
 22100  __14:
 22101  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 22102  __15:
 22103  	;
 22104  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22105  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 22106  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 22107  	if !(zPattern == uintptr(0)) {
 22108  		goto __17
 22109  	}
 22110  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22111  	goto filter_exit
 22112  __17:
 22113  	;
 22114  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 22115  	if !(int32(*(*uint8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 22116  		goto __18
 22117  	}
 22118  	nPattern--
 22119  __18:
 22120  	;
 22121  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22122  		ts+7650,
 22123  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 22124  	if !(zSql == uintptr(0)) {
 22125  		goto __19
 22126  	}
 22127  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22128  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 22129  	goto filter_exit
 22130  __19:
 22131  	;
 22132  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+168, uintptr(0))
 22133  	sqlite3.Xsqlite3_free(tls, zSql)
 22134  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 22135  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 22136  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 168))
 22137  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 22138  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 22139  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 22140  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 22141  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 22142  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 22143  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 22144  		goto __20
 22145  	}
 22146  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 22147  __20:
 22148  	;
 22149  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 22150  		goto __21
 22151  	}
 22152  	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 {
 22153  		f func(*libc.TLS, uintptr, uintptr) int32
 22154  	}{spellfix1RowCompare})))
 22155  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 22156  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 22157  	goto __22
 22158  __21:
 22159  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22160  __22:
 22161  	;
 22162  filter_exit:
 22163  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
 22164  	editDist3FromStringDelete(tls, pMatchStr3)
 22165  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 22166  }
 22167  
 22168  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 22169  	bp := tls.Alloc(24)
 22170  	defer tls.Free(24)
 22171  
 22172  	var rc int32 = SQLITE_OK
 22173  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 22174  	var zSql uintptr
 22175  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 22176  	spellfix1ResetCursor(tls, pCur)
 22177  
 22178  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22179  		ts+7750,
 22180  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 22181  			func() uintptr {
 22182  				if idxNum&64 != 0 {
 22183  					return ts + 7809
 22184  				}
 22185  				return ts + 584
 22186  			}()))
 22187  	if zSql == uintptr(0) {
 22188  		return SQLITE_NOMEM
 22189  	}
 22190  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+56, uintptr(0))
 22191  	sqlite3.Xsqlite3_free(tls, zSql)
 22192  	if rc == SQLITE_OK && idxNum&64 != 0 {
 22193  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 22194  	}
 22195  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+36, 0)
 22196  	if rc == SQLITE_OK {
 22197  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22198  		if rc == SQLITE_ROW {
 22199  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 22200  			rc = SQLITE_OK
 22201  		}
 22202  		if rc == SQLITE_DONE {
 22203  			rc = SQLITE_OK
 22204  		}
 22205  	} else {
 22206  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 22207  	}
 22208  	return rc
 22209  }
 22210  
 22211  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 22212  	var pCur uintptr = cur
 22213  	var rc int32
 22214  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 22215  	if idxNum&1 != 0 {
 22216  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 22217  	} else {
 22218  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 22219  	}
 22220  	return rc
 22221  }
 22222  
 22223  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 22224  	var pCur uintptr = cur
 22225  	var rc int32 = SQLITE_OK
 22226  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 22227  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22228  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22229  			if rc != SQLITE_ROW {
 22230  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 22231  			}
 22232  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 22233  				rc = SQLITE_OK
 22234  			}
 22235  		} else {
 22236  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 22237  		}
 22238  	}
 22239  	return rc
 22240  }
 22241  
 22242  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 22243  	var pCur uintptr = cur
 22244  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 22245  }
 22246  
 22247  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 22248  	bp := tls.Alloc(4)
 22249  	defer tls.Free(4)
 22250  
 22251  	var pCur uintptr = cur
 22252  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22253  		if i <= SPELLFIX_COL_LANGID {
 22254  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 22255  		} else {
 22256  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22257  		}
 22258  		return SQLITE_OK
 22259  	}
 22260  	switch i {
 22261  	case SPELLFIX_COL_WORD:
 22262  		{
 22263  			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))
 22264  			break
 22265  
 22266  		}
 22267  	case SPELLFIX_COL_RANK:
 22268  		{
 22269  			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)
 22270  			break
 22271  
 22272  		}
 22273  	case SPELLFIX_COL_DISTANCE:
 22274  		{
 22275  			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)
 22276  			break
 22277  
 22278  		}
 22279  	case SPELLFIX_COL_LANGID:
 22280  		{
 22281  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 22282  			break
 22283  
 22284  		}
 22285  	case SPELLFIX_COL_SCORE:
 22286  		{
 22287  			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)
 22288  			break
 22289  
 22290  		}
 22291  	case SPELLFIX_COL_MATCHLEN:
 22292  		{
 22293  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiMatchlen
 22294  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 22295  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 22296  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord
 22297  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 22298  
 22299  				if nPattern > 0 && int32(*(*uint8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 22300  					var zTranslit uintptr
 22301  					var res int32
 22302  					zTranslit = transliterate(tls, zWord, nWord)
 22303  					if !(zTranslit != 0) {
 22304  						return SQLITE_NOMEM
 22305  					}
 22306  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 22307  					sqlite3.Xsqlite3_free(tls, zTranslit)
 22308  					if res < 0 {
 22309  						return SQLITE_NOMEM
 22310  					}
 22311  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 22312  				} else {
 22313  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 22314  				}
 22315  			}
 22316  
 22317  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 22318  			break
 22319  
 22320  		}
 22321  	case SPELLFIX_COL_PHONEHASH:
 22322  		{
 22323  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64+32, -1, uintptr(0))
 22324  			break
 22325  
 22326  		}
 22327  	case SPELLFIX_COL_TOP:
 22328  		{
 22329  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 22330  			break
 22331  
 22332  		}
 22333  	case SPELLFIX_COL_SCOPE:
 22334  		{
 22335  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 22336  			break
 22337  
 22338  		}
 22339  	case SPELLFIX_COL_SRCHCNT:
 22340  		{
 22341  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 22342  			break
 22343  
 22344  		}
 22345  	default:
 22346  		{
 22347  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22348  			break
 22349  
 22350  		}
 22351  	}
 22352  	return SQLITE_OK
 22353  }
 22354  
 22355  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 22356  	var pCur uintptr = cur
 22357  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22358  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 22359  	} else {
 22360  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRowid
 22361  	}
 22362  	return SQLITE_OK
 22363  }
 22364  
 22365  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 22366  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 22367  
 22368  	return azConflict[eConflict-1]
 22369  }
 22370  
 22371  var azConflict = [5]uintptr{
 22372  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 22373  }
 22374  
 22375  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 22376  	bp := tls.Alloc(284)
 22377  	defer tls.Free(284)
 22378  
 22379  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 22380  	var rowid sqlite3_int64
 22381  	var newRowid sqlite3_int64
 22382  	var p uintptr = pVTab
 22383  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22384  
 22385  	if argc == 1 {
 22386  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22387  		spellfix1DbExec(tls, bp+280, db,
 22388  			ts+7854,
 22389  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 22390  	} else {
 22391  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 22392  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 22393  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 22394  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 22395  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 22396  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 22397  		var zK1 uintptr
 22398  		var zK2 uintptr
 22399  		var i int32
 22400  		var c uint8
 22401  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 22402  
 22403  		if zWord == uintptr(0) {
 22404  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*8)))
 22405  			if zCmd == uintptr(0) {
 22406  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 22407  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 22408  				return SQLITE_CONSTRAINT | int32(5)<<8
 22409  			}
 22410  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 22411  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22412  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22413  				return SQLITE_OK
 22414  			}
 22415  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint64(16)) == 0 {
 22416  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22417  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22418  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22419  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 22420  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 22421  					return SQLITE_NOMEM
 22422  				}
 22423  				if int32(*(*uint8)(unsafe.Pointer((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable))) == 0 || sqlite3.Xsqlite3_stricmp(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable, ts+7939) == 0 {
 22424  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22425  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 22426  				}
 22427  				return SQLITE_OK
 22428  			}
 22429  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 22430  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 22431  			return SQLITE_ERROR
 22432  		}
 22433  		if iRank < 1 {
 22434  			iRank = 1
 22435  		}
 22436  		if zSoundslike != 0 {
 22437  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 22438  		} else {
 22439  			zK1 = transliterate(tls, zWord, nWord)
 22440  		}
 22441  		if zK1 == uintptr(0) {
 22442  			return SQLITE_NOMEM
 22443  		}
 22444  		for i = 0; int32(libc.AssignUint8(&c, *(*uint8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 22445  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 22446  				*(*uint8)(unsafe.Pointer(zK1 + uintptr(i))) += uint8('a' - 'A')
 22447  			}
 22448  		}
 22449  		zK2 = phoneticHash(tls, zK1, i)
 22450  		if zK2 == uintptr(0) {
 22451  			sqlite3.Xsqlite3_free(tls, zK1)
 22452  			return SQLITE_NOMEM
 22453  		}
 22454  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 22455  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_NULL {
 22456  				spellfix1DbExec(tls, bp+280, db,
 22457  					ts+7979,
 22458  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22459  						iRank, iLang, zWord, zK1, zWord, zK2))
 22460  			} else {
 22461  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 22462  				spellfix1DbExec(tls, bp+280, db,
 22463  					ts+8065,
 22464  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22465  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 22466  			}
 22467  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 22468  		} else {
 22469  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22470  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 22471  			spellfix1DbExec(tls, bp+280, db,
 22472  				ts+8165,
 22473  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 22474  					zWord, zK1, zWord, zK2, rowid))
 22475  		}
 22476  		sqlite3.Xsqlite3_free(tls, zK1)
 22477  		sqlite3.Xsqlite3_free(tls, zK2)
 22478  	}
 22479  	return *(*int32)(unsafe.Pointer(bp + 280))
 22480  }
 22481  
 22482  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 22483  	bp := tls.Alloc(36)
 22484  	defer tls.Free(36)
 22485  
 22486  	var p uintptr = pVTab
 22487  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22488  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 22489  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 22490  	if zNewName == uintptr(0) {
 22491  		return SQLITE_NOMEM
 22492  	}
 22493  	spellfix1DbExec(tls, bp+32, db,
 22494  		ts+8274,
 22495  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 22496  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 22497  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 22498  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 22499  	} else {
 22500  		sqlite3.Xsqlite3_free(tls, zNewName)
 22501  	}
 22502  	return *(*int32)(unsafe.Pointer(bp + 32))
 22503  }
 22504  
 22505  var spellfix1Module = sqlite3_module{
 22506  	FxCreate:     0,
 22507  	FxConnect:    0,
 22508  	FxBestIndex:  0,
 22509  	FxDisconnect: 0,
 22510  	FxDestroy:    0,
 22511  	FxOpen:       0,
 22512  	FxClose:      0,
 22513  	FxFilter:     0,
 22514  	FxNext:       0,
 22515  	FxEof:        0,
 22516  	FxColumn:     0,
 22517  	FxRowid:      0,
 22518  	FxUpdate:     0,
 22519  	FxRename:     0,
 22520  }
 22521  
 22522  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 22523  	var rc int32 = SQLITE_OK
 22524  	var i int32
 22525  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 22526  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22527  		*(*uintptr)(unsafe.Pointer(&struct {
 22528  			f func(*libc.TLS, uintptr, int32, uintptr)
 22529  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 22530  	if rc == SQLITE_OK {
 22531  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 22532  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22533  			*(*uintptr)(unsafe.Pointer(&struct {
 22534  				f func(*libc.TLS, uintptr, int32, uintptr)
 22535  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 22536  	}
 22537  	if rc == SQLITE_OK {
 22538  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 22539  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22540  			*(*uintptr)(unsafe.Pointer(&struct {
 22541  				f func(*libc.TLS, uintptr, int32, uintptr)
 22542  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 22543  	}
 22544  	if rc == SQLITE_OK {
 22545  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 22546  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22547  			*(*uintptr)(unsafe.Pointer(&struct {
 22548  				f func(*libc.TLS, uintptr, int32, uintptr)
 22549  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 22550  	}
 22551  	if rc == SQLITE_OK {
 22552  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 22553  	}
 22554  	if rc == SQLITE_OK {
 22555  		rc = editDist3Install(tls, db)
 22556  	}
 22557  
 22558  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{}))-uint64(1); i++ {
 22559  	}
 22560  
 22561  	return rc
 22562  }
 22563  
 22564  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22565  	_ = pApi
 22566  
 22567  	return spellfix1Register(tls, db)
 22568  	return SQLITE_OK
 22569  }
 22570  
 22571  var totype_one int32 = 1
 22572  
 22573  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 22574  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 22575  }
 22576  
 22577  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 22578  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 22579  }
 22580  
 22581  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 22582  	var c int32 = 0
 22583  	var i int32
 22584  
 22585  	var pow63 uintptr = ts + 8412
 22586  	for i = 0; c == 0 && i < 18; i++ {
 22587  		c = (int32(*(*uint8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*uint8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 22588  	}
 22589  	if c == 0 {
 22590  		c = int32(*(*uint8)(unsafe.Pointer(zNum + 18))) - '8'
 22591  	}
 22592  	return c
 22593  }
 22594  
 22595  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 22596  	var u sqlite3_uint64 = uint64(0)
 22597  	var neg int32 = 0
 22598  	var i int32
 22599  	var c int32 = 0
 22600  	var nonNum int32 = 0
 22601  	var zStart uintptr
 22602  	var zEnd uintptr = zNum + uintptr(length)
 22603  
 22604  	for zNum < zEnd && totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zNum))) != 0 {
 22605  		zNum++
 22606  	}
 22607  	if zNum < zEnd {
 22608  		if int32(*(*uint8)(unsafe.Pointer(zNum))) == '-' {
 22609  			neg = 1
 22610  			zNum++
 22611  		} else if int32(*(*uint8)(unsafe.Pointer(zNum))) == '+' {
 22612  			zNum++
 22613  		}
 22614  	}
 22615  	zStart = zNum
 22616  	for zNum < zEnd && int32(*(*uint8)(unsafe.Pointer(zNum))) == '0' {
 22617  		zNum++
 22618  	}
 22619  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 22620  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 22621  	}
 22622  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 22623  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 22624  	} else if neg != 0 {
 22625  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 22626  	} else {
 22627  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 22628  	}
 22629  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 22630  		return 1
 22631  	} else if i < 19 {
 22632  		return 0
 22633  	} else {
 22634  		c = totypeCompare2pow63(tls, zNum)
 22635  		if c < 0 {
 22636  			return 0
 22637  		} else if c > 0 {
 22638  			return 1
 22639  		} else {
 22640  			if neg != 0 {
 22641  				return 0
 22642  			}
 22643  			return 2
 22644  		}
 22645  	}
 22646  	return int32(0)
 22647  }
 22648  
 22649  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 22650  	var zEnd uintptr
 22651  
 22652  	var sign int32
 22653  	var s sqlite3_int64
 22654  	var d int32
 22655  	var esign int32
 22656  	var e int32
 22657  	var eValid int32
 22658  	var result float64
 22659  	var nDigits int32
 22660  	var nonNum int32
 22661  	var scale float64
 22662  	zEnd = z + uintptr(length)
 22663  	sign = 1
 22664  	s = int64(0)
 22665  	d = 0
 22666  	esign = 1
 22667  	e = 0
 22668  	eValid = 1
 22669  	nDigits = 0
 22670  	nonNum = 0
 22671  
 22672  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 22673  
 22674  __1:
 22675  	if !(z < zEnd && totypeIsspace(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 22676  		goto __2
 22677  	}
 22678  	z++
 22679  	goto __1
 22680  __2:
 22681  	;
 22682  	if !(z >= zEnd) {
 22683  		goto __3
 22684  	}
 22685  	return 0
 22686  __3:
 22687  	;
 22688  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '-') {
 22689  		goto __4
 22690  	}
 22691  	sign = -1
 22692  	z++
 22693  	goto __5
 22694  __4:
 22695  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '+') {
 22696  		goto __6
 22697  	}
 22698  	z++
 22699  __6:
 22700  	;
 22701  __5:
 22702  	;
 22703  __7:
 22704  	if !(z < zEnd && int32(*(*uint8)(unsafe.Pointer(z))) == '0') {
 22705  		goto __8
 22706  	}
 22707  	z++
 22708  	nDigits++
 22709  	goto __7
 22710  __8:
 22711  	;
 22712  __9:
 22713  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22714  		goto __10
 22715  	}
 22716  	s = s*int64(10) + sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(z)))-'0')
 22717  	z++
 22718  	nDigits++
 22719  	goto __9
 22720  __10:
 22721  	;
 22722  __11:
 22723  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 22724  		goto __12
 22725  	}
 22726  	z++
 22727  	nDigits++
 22728  	d++
 22729  	goto __11
 22730  __12:
 22731  	;
 22732  	if !(z >= zEnd) {
 22733  		goto __13
 22734  	}
 22735  	goto totype_atof_calc
 22736  __13:
 22737  	;
 22738  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '.') {
 22739  		goto __14
 22740  	}
 22741  	z++
 22742  
 22743  __15:
 22744  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22745  		goto __16
 22746  	}
 22747  	s = s*int64(10) + sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(z)))-'0')
 22748  	z++
 22749  	nDigits++
 22750  	d--
 22751  	goto __15
 22752  __16:
 22753  	;
 22754  __17:
 22755  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 22756  		goto __18
 22757  	}
 22758  	z++
 22759  	nDigits++
 22760  	goto __17
 22761  __18:
 22762  	;
 22763  __14:
 22764  	;
 22765  	if !(z >= zEnd) {
 22766  		goto __19
 22767  	}
 22768  	goto totype_atof_calc
 22769  __19:
 22770  	;
 22771  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == 'e' || int32(*(*uint8)(unsafe.Pointer(z))) == 'E') {
 22772  		goto __20
 22773  	}
 22774  	z++
 22775  	eValid = 0
 22776  	if !(z >= zEnd) {
 22777  		goto __21
 22778  	}
 22779  	goto totype_atof_calc
 22780  __21:
 22781  	;
 22782  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '-') {
 22783  		goto __22
 22784  	}
 22785  	esign = -1
 22786  	z++
 22787  	goto __23
 22788  __22:
 22789  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == '+') {
 22790  		goto __24
 22791  	}
 22792  	z++
 22793  __24:
 22794  	;
 22795  __23:
 22796  	;
 22797  __25:
 22798  	if !(z < zEnd && totypeIsdigit(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 22799  		goto __26
 22800  	}
 22801  	if e < 10000 {
 22802  		e = e*10 + (int32(*(*uint8)(unsafe.Pointer(z))) - '0')
 22803  	} else {
 22804  		e = 10000
 22805  	}
 22806  	z++
 22807  	eValid = 1
 22808  	goto __25
 22809  __26:
 22810  	;
 22811  __20:
 22812  	;
 22813  	if !(nDigits != 0 && eValid != 0) {
 22814  		goto __27
 22815  	}
 22816  __28:
 22817  	if !(z < zEnd && totypeIsspace(tls, *(*uint8)(unsafe.Pointer(z))) != 0) {
 22818  		goto __29
 22819  	}
 22820  	z++
 22821  	goto __28
 22822  __29:
 22823  	;
 22824  __27:
 22825  	;
 22826  totype_atof_calc:
 22827  	e = e*esign + d
 22828  	if !(e < 0) {
 22829  		goto __30
 22830  	}
 22831  	esign = -1
 22832  	e = e * -1
 22833  	goto __31
 22834  __30:
 22835  	esign = 1
 22836  __31:
 22837  	;
 22838  	if !!(s != 0) {
 22839  		goto __32
 22840  	}
 22841  
 22842  	if sign < 0 && nDigits != 0 {
 22843  		result = -libc.Float64FromFloat64(float64(0))
 22844  	} else {
 22845  		result = float64(0)
 22846  	}
 22847  	goto __33
 22848  __32:
 22849  	if !(esign > 0) {
 22850  		goto __34
 22851  	}
 22852  __36:
 22853  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 22854  		goto __37
 22855  	}
 22856  	e--
 22857  	s = s * int64(10)
 22858  	goto __36
 22859  __37:
 22860  	;
 22861  	goto __35
 22862  __34:
 22863  __38:
 22864  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 22865  		goto __39
 22866  	}
 22867  	e--
 22868  	s = s / int64(10)
 22869  	goto __38
 22870  __39:
 22871  	;
 22872  __35:
 22873  	;
 22874  	if sign < 0 {
 22875  		s = -s
 22876  	} else {
 22877  		s = s
 22878  	}
 22879  
 22880  	if !(e != 0) {
 22881  		goto __40
 22882  	}
 22883  	scale = 1.0
 22884  
 22885  	if !(e > 307 && e < 342) {
 22886  		goto __42
 22887  	}
 22888  __44:
 22889  	if !(e%308 != 0) {
 22890  		goto __45
 22891  	}
 22892  	scale = scale * 1.0e+1
 22893  	e = e - 1
 22894  	goto __44
 22895  __45:
 22896  	;
 22897  	if !(esign < 0) {
 22898  		goto __46
 22899  	}
 22900  	result = float64(s) / scale
 22901  	result = result / 1.0e+308
 22902  	goto __47
 22903  __46:
 22904  	result = float64(s) * scale
 22905  	result = result * 1.0e+308
 22906  __47:
 22907  	;
 22908  	goto __43
 22909  __42:
 22910  	if !(e >= 342) {
 22911  		goto __48
 22912  	}
 22913  	if !(esign < 0) {
 22914  		goto __50
 22915  	}
 22916  	result = 0.0 * float64(s)
 22917  	goto __51
 22918  __50:
 22919  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 22920  __51:
 22921  	;
 22922  	goto __49
 22923  __48:
 22924  __52:
 22925  	if !(e%22 != 0) {
 22926  		goto __53
 22927  	}
 22928  	scale = scale * 1.0e+1
 22929  	e = e - 1
 22930  	goto __52
 22931  __53:
 22932  	;
 22933  __54:
 22934  	if !(e > 0) {
 22935  		goto __55
 22936  	}
 22937  	scale = scale * 1.0e+22
 22938  	e = e - 22
 22939  	goto __54
 22940  __55:
 22941  	;
 22942  	if !(esign < 0) {
 22943  		goto __56
 22944  	}
 22945  	result = float64(s) / scale
 22946  	goto __57
 22947  __56:
 22948  	result = float64(s) * scale
 22949  __57:
 22950  	;
 22951  __49:
 22952  	;
 22953  __43:
 22954  	;
 22955  	goto __41
 22956  __40:
 22957  	result = float64(s)
 22958  __41:
 22959  	;
 22960  __33:
 22961  	;
 22962  	*(*float64)(unsafe.Pointer(pResult)) = result
 22963  
 22964  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 22965  }
 22966  
 22967  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22968  	bp := tls.Alloc(24)
 22969  	defer tls.Free(24)
 22970  
 22971  	_ = argc
 22972  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22973  	case SQLITE_FLOAT:
 22974  		{
 22975  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22976  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 22977  			if rVal == float64(iVal) {
 22978  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 22979  			}
 22980  			break
 22981  
 22982  		}
 22983  	case SQLITE_INTEGER:
 22984  		{
 22985  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22986  			break
 22987  
 22988  		}
 22989  	case SQLITE_BLOB:
 22990  		{
 22991  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22992  			if zBlob != 0 {
 22993  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22994  				if uint64(nBlob) == uint64(unsafe.Sizeof(sqlite3_int64(0))) {
 22995  					if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&totype_one))))) == 0 {
 22996  						var i int32
 22997  
 22998  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 22999  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(sqlite3_int64(0)))-uint64(1)-uint64(i))))
 23000  						}
 23001  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 23002  					} else {
 23003  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 23004  					}
 23005  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 23006  				}
 23007  			}
 23008  			break
 23009  
 23010  		}
 23011  	case SQLITE_TEXT:
 23012  		{
 23013  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23014  			if zStr != 0 {
 23015  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23016  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 23017  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 23018  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 23019  					}
 23020  				}
 23021  			}
 23022  			break
 23023  
 23024  		}
 23025  	default:
 23026  		{
 23027  			break
 23028  
 23029  		}
 23030  	}
 23031  }
 23032  
 23033  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 23034  	bp := tls.Alloc(24)
 23035  	defer tls.Free(24)
 23036  
 23037  	_ = argc
 23038  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 23039  	case SQLITE_FLOAT:
 23040  		{
 23041  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23042  			break
 23043  
 23044  		}
 23045  	case SQLITE_INTEGER:
 23046  		{
 23047  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23048  			var rVal float64 = float64(iVal)
 23049  			if iVal == sqlite3_int64(rVal) {
 23050  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 23051  			}
 23052  			break
 23053  
 23054  		}
 23055  	case SQLITE_BLOB:
 23056  		{
 23057  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23058  			if zBlob != 0 {
 23059  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23060  				if uint64(nBlob) == uint64(unsafe.Sizeof(float64(0))) {
 23061  					if int32(*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&totype_one))))) == 1 {
 23062  						var i int32
 23063  
 23064  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 23065  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(1)-uint64(i))))
 23066  						}
 23067  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(float64(0))))
 23068  					} else {
 23069  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(float64(0))))
 23070  					}
 23071  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 23072  				}
 23073  			}
 23074  			break
 23075  
 23076  		}
 23077  	case SQLITE_TEXT:
 23078  		{
 23079  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23080  			if zStr != 0 {
 23081  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23082  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 23083  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 23084  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 23085  						return
 23086  					}
 23087  				}
 23088  			}
 23089  			break
 23090  
 23091  		}
 23092  	default:
 23093  		{
 23094  			break
 23095  
 23096  		}
 23097  	}
 23098  }
 23099  
 23100  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23101  	var rc int32 = SQLITE_OK
 23102  	_ = pApi
 23103  
 23104  	_ = pzErrMsg
 23105  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 23106  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 23107  		*(*uintptr)(unsafe.Pointer(&struct {
 23108  			f func(*libc.TLS, uintptr, int32, uintptr)
 23109  		}{tointegerFunc})), uintptr(0), uintptr(0))
 23110  	if rc == SQLITE_OK {
 23111  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 23112  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 23113  			*(*uintptr)(unsafe.Pointer(&struct {
 23114  				f func(*libc.TLS, uintptr, int32, uintptr)
 23115  			}{torealFunc})), uintptr(0), uintptr(0))
 23116  	}
 23117  	return rc
 23118  }
 23119  
 23120  type UnionCsr1 = struct {
 23121  	Fbase        sqlite3_vtab_cursor
 23122  	FpStmt       uintptr
 23123  	FiMaxRowid   sqlite3_int64
 23124  	FiTab        int32
 23125  	F__ccgo_pad1 [4]byte
 23126  }
 23127  
 23128  type UnionCsr = UnionCsr1
 23129  type UnionTab1 = struct {
 23130  	Fbase        sqlite3_vtab
 23131  	Fdb          uintptr
 23132  	FbSwarm      int32
 23133  	FiPK         int32
 23134  	FnSrc        int32
 23135  	F__ccgo_pad1 [4]byte
 23136  	FaSrc        uintptr
 23137  	FbHasContext int32
 23138  	F__ccgo_pad2 [4]byte
 23139  	FzSourceStr  uintptr
 23140  	FpNotFound   uintptr
 23141  	FpOpenClose  uintptr
 23142  	FpClosable   uintptr
 23143  	FnOpen       int32
 23144  	FnMaxOpen    int32
 23145  }
 23146  
 23147  type UnionTab = UnionTab1
 23148  type UnionSrc1 = struct {
 23149  	FzDb           uintptr
 23150  	FzTab          uintptr
 23151  	FiMin          sqlite3_int64
 23152  	FiMax          sqlite3_int64
 23153  	FzFile         uintptr
 23154  	FzContext      uintptr
 23155  	FnUser         int32
 23156  	F__ccgo_pad1   [4]byte
 23157  	Fdb            uintptr
 23158  	FpNextClosable uintptr
 23159  }
 23160  
 23161  type UnionSrc = UnionSrc1
 23162  
 23163  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 23164  	var pRet uintptr
 23165  
 23166  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23167  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 23168  		if pRet != 0 {
 23169  			libc.Xmemset(tls, pRet, 0, size_t(nByte))
 23170  		} else {
 23171  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23172  		}
 23173  	} else {
 23174  		pRet = uintptr(0)
 23175  	}
 23176  	return pRet
 23177  }
 23178  
 23179  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 23180  	var zRet uintptr = uintptr(0)
 23181  	if zIn != 0 {
 23182  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + uint64(1))
 23183  		zRet = unionMalloc(tls, pRc, nByte)
 23184  		if zRet != 0 {
 23185  			libc.Xmemcpy(tls, zRet, zIn, size_t(nByte))
 23186  		}
 23187  	}
 23188  	return zRet
 23189  }
 23190  
 23191  func unionDequote(tls *libc.TLS, z uintptr) {
 23192  	if z != 0 {
 23193  		var q uint8 = *(*uint8)(unsafe.Pointer(z))
 23194  
 23195  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 23196  			var iIn int32 = 1
 23197  			var iOut int32 = 0
 23198  			if int32(q) == '[' {
 23199  				q = uint8(']')
 23200  			}
 23201  			for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 23202  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 23203  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 23204  						iIn++
 23205  						break
 23206  					} else {
 23207  						iIn = iIn + 2
 23208  						*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 23209  					}
 23210  				} else {
 23211  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 23212  				}
 23213  			}
 23214  			*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
 23215  		}
 23216  	}
 23217  }
 23218  
 23219  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 23220  	bp := tls.Alloc(16)
 23221  	defer tls.Free(16)
 23222  
 23223  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 23224  
 23225  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23226  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 23227  		if rc != SQLITE_OK {
 23228  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23229  			*(*int32)(unsafe.Pointer(pRc)) = rc
 23230  		}
 23231  	}
 23232  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 23233  }
 23234  
 23235  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 23236  	var pRet uintptr = uintptr(0)
 23237  	var zSql uintptr
 23238  	var ap va_list
 23239  	_ = ap
 23240  	ap = va
 23241  
 23242  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 23243  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23244  		if zSql == uintptr(0) {
 23245  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23246  		} else {
 23247  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 23248  		}
 23249  	}
 23250  	sqlite3.Xsqlite3_free(tls, zSql)
 23251  
 23252  	_ = ap
 23253  	return pRet
 23254  }
 23255  
 23256  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 23257  	bp := tls.Alloc(8)
 23258  	defer tls.Free(8)
 23259  
 23260  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 23261  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 23262  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23263  		*(*int32)(unsafe.Pointer(pRc)) = rc
 23264  		if rc != 0 {
 23265  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23266  		}
 23267  	}
 23268  }
 23269  
 23270  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 23271  	bp := tls.Alloc(8)
 23272  	defer tls.Free(8)
 23273  
 23274  	var rc int32 = SQLITE_OK
 23275  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23276  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23277  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23278  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23279  		}
 23280  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 23281  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23282  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 23283  			if pzErr != 0 {
 23284  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23285  			}
 23286  		}
 23287  	}
 23288  	return rc
 23289  }
 23290  
 23291  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 23292  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 23293  		var p uintptr
 23294  		var pp uintptr
 23295  		for pp = pTab + 88; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 23296  		}
 23297  		p = *(*uintptr)(unsafe.Pointer(pp))
 23298  
 23299  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 23300  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 23301  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 23302  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 23303  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 23304  	}
 23305  }
 23306  
 23307  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23308  	if pVtab != 0 {
 23309  		var pTab uintptr = pVtab
 23310  		var i int32
 23311  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23312  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23313  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 23314  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23315  			if bHaveSrcDb != 0 {
 23316  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23317  			}
 23318  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 23319  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 23320  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 23321  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 23322  		}
 23323  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23324  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23325  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 23326  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 23327  		sqlite3.Xsqlite3_free(tls, pTab)
 23328  	}
 23329  	return SQLITE_OK
 23330  }
 23331  
 23332  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23333  	bp := tls.Alloc(36)
 23334  	defer tls.Free(36)
 23335  
 23336  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 23337  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 23338  	var rc int32
 23339  
 23340  	sqlite3.Xsqlite3_table_column_metadata(tls,
 23341  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+32, uintptr(0))
 23342  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 23343  	if rc == SQLITE_ERROR ||
 23344  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 32)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 23345  		rc = SQLITE_ERROR
 23346  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 23347  			libc.VaList(bp, func() uintptr {
 23348  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23349  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23350  				}
 23351  				return ts + 584
 23352  			}(),
 23353  				func() uintptr {
 23354  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23355  						return ts + 8506
 23356  					}
 23357  					return ts + 584
 23358  				}(),
 23359  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23360  	}
 23361  	return rc
 23362  }
 23363  
 23364  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 23365  	bp := tls.Alloc(4)
 23366  	defer tls.Free(4)
 23367  
 23368  	var zRet uintptr = uintptr(0)
 23369  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23370  		var db uintptr = func() uintptr {
 23371  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23372  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23373  			}
 23374  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23375  		}()
 23376  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 23377  		var pStmt uintptr = unionPrepare(tls, bp, db,
 23378  			ts+8508, pzErr)
 23379  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23380  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 23381  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 23382  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23383  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23384  				zRet = unionStrdup(tls, bp, z)
 23385  			}
 23386  			unionFinalize(tls, bp, pStmt, pzErr)
 23387  		}
 23388  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 23389  	}
 23390  
 23391  	return zRet
 23392  }
 23393  
 23394  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 23395  	bp := tls.Alloc(4)
 23396  	defer tls.Free(4)
 23397  
 23398  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23399  	var z0 uintptr = uintptr(0)
 23400  	var i int32
 23401  
 23402  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 23403  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23404  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*72, pzErr)
 23405  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 23406  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23407  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23408  		}
 23409  		sqlite3.Xsqlite3_free(tls, z)
 23410  	}
 23411  	sqlite3.Xsqlite3_free(tls, z0)
 23412  
 23413  	return *(*int32)(unsafe.Pointer(bp))
 23414  }
 23415  
 23416  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23417  	bp := tls.Alloc(16)
 23418  	defer tls.Free(16)
 23419  
 23420  	var rc int32
 23421  
 23422  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 23423  	if rc != SQLITE_OK {
 23424  		return rc
 23425  	}
 23426  
 23427  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 23428  	if rc == SQLITE_OK {
 23429  		return rc
 23430  	}
 23431  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23432  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23433  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23434  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23435  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23436  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23437  		}
 23438  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23439  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 23440  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23441  			return rc
 23442  		}
 23443  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 23444  	}
 23445  	if rc != SQLITE_OK {
 23446  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 23447  	}
 23448  	return rc
 23449  }
 23450  
 23451  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 23452  
 23453  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 23454  	bp := tls.Alloc(4)
 23455  	defer tls.Free(4)
 23456  
 23457  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23458  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*72
 23459  
 23460  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 23461  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 23462  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 23463  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23464  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 23465  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23466  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 23467  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 23468  				} else {
 23469  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 23470  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23471  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23472  					}
 23473  					sqlite3.Xsqlite3_free(tls, z)
 23474  				}
 23475  			}
 23476  		}
 23477  
 23478  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23479  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23480  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23481  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 23482  		} else {
 23483  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23484  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23485  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23486  		}
 23487  	}
 23488  
 23489  	return *(*int32)(unsafe.Pointer(bp))
 23490  }
 23491  
 23492  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 23493  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23494  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*72
 23495  
 23496  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23497  			var pp uintptr
 23498  			for pp = pTab + 88; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 23499  			}
 23500  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 23501  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 23502  		}
 23503  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 23504  	}
 23505  }
 23506  
 23507  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 23508  	var rc int32 = SQLITE_OK
 23509  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23510  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23511  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23512  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 23513  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 23514  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23515  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 23516  
 23517  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23518  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23519  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23520  			}
 23521  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 23522  		}
 23523  	}
 23524  	return rc
 23525  }
 23526  
 23527  func union_isspace(tls *libc.TLS, c uint8) int32 {
 23528  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 23529  }
 23530  
 23531  func union_isidchar(tls *libc.TLS, c uint8) int32 {
 23532  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 23533  }
 23534  
 23535  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 23536  	bp := tls.Alloc(68)
 23537  	defer tls.Free(68)
 23538  
 23539  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 23540  	var i int32
 23541  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 23542  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 23543  	}
 23544  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 23545  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)))
 23546  		if zArg != 0 {
 23547  			var nOpt int32 = 0
 23548  			var zOpt uintptr
 23549  			var zVal uintptr
 23550  
 23551  			unionDequote(tls, zArg)
 23552  			zOpt = zArg
 23553  			for union_isspace(tls, *(*uint8)(unsafe.Pointer(zOpt))) != 0 {
 23554  				zOpt++
 23555  			}
 23556  			zVal = zOpt
 23557  			if int32(*(*uint8)(unsafe.Pointer(zVal))) == ':' {
 23558  				zVal++
 23559  			}
 23560  			for union_isidchar(tls, *(*uint8)(unsafe.Pointer(zVal))) != 0 {
 23561  				zVal++
 23562  			}
 23563  			nOpt = int32((int64(zVal) - int64(zOpt)) / 1)
 23564  
 23565  			for union_isspace(tls, *(*uint8)(unsafe.Pointer(zVal))) != 0 {
 23566  				zVal++
 23567  			}
 23568  			if int32(*(*uint8)(unsafe.Pointer(zVal))) == '=' {
 23569  				*(*uint8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = uint8(0)
 23570  				zVal++
 23571  				for union_isspace(tls, *(*uint8)(unsafe.Pointer(zVal))) != 0 {
 23572  					zVal++
 23573  				}
 23574  				zVal = unionStrdup(tls, bp+64, zVal)
 23575  				if zVal != 0 {
 23576  					unionDequote(tls, zVal)
 23577  					if int32(*(*uint8)(unsafe.Pointer(zOpt))) == ':' {
 23578  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 23579  						if iParam == 0 {
 23580  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23581  								ts+8621, libc.VaList(bp, zOpt))
 23582  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23583  						} else {
 23584  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 23585  						}
 23586  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 23587  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 23588  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 23589  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 23590  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23591  						}
 23592  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 23593  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23594  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23595  								ts+8707, 0)
 23596  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23597  						} else {
 23598  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23599  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 23600  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23601  										return ts + 8762
 23602  									}
 23603  									return ts + 584
 23604  								}()))
 23605  						}
 23606  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 23607  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23608  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23609  								ts+8775, 0)
 23610  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23611  						} else {
 23612  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23613  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 23614  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23615  										return ts + 8762
 23616  									}
 23617  									return ts + 584
 23618  								}()))
 23619  						}
 23620  					} else {
 23621  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 23622  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23623  					}
 23624  					sqlite3.Xsqlite3_free(tls, zVal)
 23625  				}
 23626  			} else {
 23627  				if i == 0 && nArg == 1 {
 23628  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23629  						ts+8869, libc.VaList(bp+48, zArg))
 23630  				} else {
 23631  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
 23632  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23633  				}
 23634  			}
 23635  			sqlite3.Xsqlite3_free(tls, zArg)
 23636  		}
 23637  	}
 23638  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 23639  }
 23640  
 23641  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23642  	bp := tls.Alloc(44)
 23643  	defer tls.Free(44)
 23644  
 23645  	var pTab uintptr = uintptr(0)
 23646  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 23647  	var bSwarm int32 = func() int32 {
 23648  		if pAux == uintptr(0) {
 23649  			return 0
 23650  		}
 23651  		return 1
 23652  	}()
 23653  	var zVtab uintptr = func() uintptr {
 23654  		if bSwarm != 0 {
 23655  			return ts + 8911
 23656  		}
 23657  		return ts + 8921
 23658  	}()
 23659  
 23660  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*8))) != 0 {
 23661  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 23662  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23663  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 23664  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 23665  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23666  	} else {
 23667  		var nAlloc int32 = 0
 23668  		var pStmt uintptr = uintptr(0)
 23669  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 23670  
 23671  		unionDequote(tls, zArg)
 23672  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 23673  			ts+9010, libc.VaList(bp+16, zArg))
 23674  
 23675  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 23676  		if pTab != 0 {
 23677  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 23678  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 23679  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 23680  		}
 23681  
 23682  		if bSwarm != 0 {
 23683  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*8, pzErr)
 23684  		}
 23685  
 23686  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23687  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23688  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 23689  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 23690  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 23691  			var pSrc uintptr
 23692  
 23693  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23694  				var nNew int32
 23695  				if nAlloc != 0 {
 23696  					nNew = nAlloc * 2
 23697  				} else {
 23698  					nNew = 8
 23699  				}
 23700  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 23701  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(nNew)*uint64(unsafe.Sizeof(UnionSrc{})))
 23702  				if aNew == uintptr(0) {
 23703  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 23704  					break
 23705  				} else {
 23706  					libc.Xmemset(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0, uint64(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint64(unsafe.Sizeof(UnionSrc{})))
 23707  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 23708  					nAlloc = nNew
 23709  				}
 23710  			}
 23711  
 23712  			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 {
 23713  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 23714  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23715  			}
 23716  
 23717  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23718  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*72
 23719  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 23720  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 23721  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 23722  				if bSwarm != 0 {
 23723  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 23724  				} else {
 23725  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 23726  				}
 23727  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23728  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 23729  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 23730  				}
 23731  			}
 23732  		}
 23733  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23734  		pStmt = uintptr(0)
 23735  
 23736  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 23737  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 23738  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23739  		}
 23740  
 23741  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23742  			if bSwarm != 0 {
 23743  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 23744  			} else {
 23745  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 23746  			}
 23747  		}
 23748  
 23749  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23750  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 23751  			var tdb uintptr = func() uintptr {
 23752  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23753  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23754  				}
 23755  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23756  			}()
 23757  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 23758  				ts+9095,
 23759  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 23760  		}
 23761  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23762  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23763  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 23764  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 23765  		}
 23766  
 23767  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23768  	}
 23769  
 23770  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 23771  		unionDisconnect(tls, pTab)
 23772  		pTab = uintptr(0)
 23773  	}
 23774  
 23775  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 23776  	return *(*int32)(unsafe.Pointer(bp + 40))
 23777  }
 23778  
 23779  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23780  	bp := tls.Alloc(4)
 23781  	defer tls.Free(4)
 23782  
 23783  	var pCsr uintptr
 23784  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23785  	_ = p
 23786  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 23787  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 23788  	return *(*int32)(unsafe.Pointer(bp))
 23789  }
 23790  
 23791  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 23792  	var pCsr uintptr = cur
 23793  	unionFinalizeCsrStmt(tls, pCsr)
 23794  	sqlite3.Xsqlite3_free(tls, pCsr)
 23795  	return SQLITE_OK
 23796  }
 23797  
 23798  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 23799  	bp := tls.Alloc(28)
 23800  	defer tls.Free(28)
 23801  
 23802  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 23803  
 23804  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 23805  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23806  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 23807  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23808  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 23809  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23810  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23811  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23812  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+16)
 23813  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+16, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 23814  						ts+9273,
 23815  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 23816  							func() uintptr {
 23817  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 23818  									return ts + 9305
 23819  								}
 23820  								return ts + 9322
 23821  							}(),
 23822  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 23823  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 23824  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23825  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 23826  					}
 23827  				}
 23828  			}
 23829  		}
 23830  	}
 23831  
 23832  	return *(*int32)(unsafe.Pointer(bp + 24))
 23833  }
 23834  
 23835  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 23836  	var rc int32
 23837  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 23838  		rc = doUnionNext(tls, cur)
 23839  	}
 23840  	return rc
 23841  }
 23842  
 23843  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23844  	var pCsr uintptr = cur
 23845  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 23846  	return SQLITE_OK
 23847  }
 23848  
 23849  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23850  	var pCsr uintptr = cur
 23851  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 23852  	return SQLITE_OK
 23853  }
 23854  
 23855  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 23856  	var pCsr uintptr = cur
 23857  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 23858  }
 23859  
 23860  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23861  	bp := tls.Alloc(108)
 23862  	defer tls.Free(108)
 23863  
 23864  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 23865  	var pCsr uintptr = pVtabCursor
 23866  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 23867  	var i int32
 23868  	var zSql uintptr = uintptr(0)
 23869  	var bZero int32 = 0
 23870  
 23871  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 23872  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 23873  
 23874  	_ = idxStr
 23875  
 23876  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 23877  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23878  	} else {
 23879  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 23880  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23881  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 23882  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 23883  					bZero = 1
 23884  				} else {
 23885  					iMax--
 23886  				}
 23887  			}
 23888  		}
 23889  
 23890  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 23891  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*8)))
 23892  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 23893  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 23894  					bZero = 1
 23895  				} else {
 23896  					iMin++
 23897  				}
 23898  			}
 23899  		}
 23900  	}
 23901  
 23902  	unionFinalizeCsrStmt(tls, pCsr)
 23903  	if bZero != 0 {
 23904  		return SQLITE_OK
 23905  	}
 23906  
 23907  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23908  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23909  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23910  			continue
 23911  		}
 23912  
 23913  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 23914  			if zSql != 0 {
 23915  				return ts + 9360
 23916  			}
 23917  			return ts + 584
 23918  		}(), func() uintptr {
 23919  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23920  				return ts + 5624
 23921  			}
 23922  			return ts + 584
 23923  		}(), func() uintptr {
 23924  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23925  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23926  			}
 23927  			return ts + 584
 23928  		}(), func() uintptr {
 23929  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23930  				return ts + 5626
 23931  			}
 23932  			return ts + 584
 23933  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23934  		if zSql == uintptr(0) {
 23935  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 23936  			break
 23937  		}
 23938  
 23939  		if iMin == iMax {
 23940  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 23941  		} else {
 23942  			var zWhere uintptr = ts + 9392
 23943  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23944  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 23945  				zWhere = ts + 9419
 23946  			}
 23947  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 23948  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 23949  			}
 23950  		}
 23951  
 23952  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23953  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 23954  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 23955  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+16)
 23956  			break
 23957  		}
 23958  	}
 23959  
 23960  	if zSql == uintptr(0) {
 23961  		return *(*int32)(unsafe.Pointer(bp + 104))
 23962  	} else {
 23963  		var db uintptr = func() uintptr {
 23964  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23965  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72)).Fdb
 23966  			}
 23967  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23968  		}()
 23969  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+16)
 23970  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23971  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23972  		}
 23973  		sqlite3.Xsqlite3_free(tls, zSql)
 23974  	}
 23975  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 23976  		return *(*int32)(unsafe.Pointer(bp + 104))
 23977  	}
 23978  	return unionNext(tls, pVtabCursor)
 23979  }
 23980  
 23981  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23982  	var pTab uintptr = tab
 23983  	var iEq int32 = -1
 23984  	var iLt int32 = -1
 23985  	var iGt int32 = -1
 23986  	var i int32
 23987  
 23988  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 23989  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 23990  		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) {
 23991  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 23992  			case SQLITE_INDEX_CONSTRAINT_EQ:
 23993  				iEq = i
 23994  				break
 23995  				fallthrough
 23996  			case SQLITE_INDEX_CONSTRAINT_LE:
 23997  				fallthrough
 23998  			case SQLITE_INDEX_CONSTRAINT_LT:
 23999  				iLt = i
 24000  				break
 24001  				fallthrough
 24002  			case SQLITE_INDEX_CONSTRAINT_GE:
 24003  				fallthrough
 24004  			case SQLITE_INDEX_CONSTRAINT_GT:
 24005  				iGt = i
 24006  				break
 24007  			}
 24008  		}
 24009  	}
 24010  
 24011  	if iEq >= 0 {
 24012  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 24013  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 24014  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 24015  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 24016  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 24017  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 24018  	} else {
 24019  		var iCons int32 = 1
 24020  		var idxNum int32 = 0
 24021  		var nRow sqlite3_int64 = int64(1000000)
 24022  		if iLt >= 0 {
 24023  			nRow = nRow / int64(2)
 24024  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 24025  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 24026  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 24027  		}
 24028  		if iGt >= 0 {
 24029  			nRow = nRow / int64(2)
 24030  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 24031  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 24032  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 24033  		}
 24034  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 24035  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 24036  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 24037  	}
 24038  
 24039  	return SQLITE_OK
 24040  }
 24041  
 24042  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 24043  	var rc int32
 24044  
 24045  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 24046  	if rc == SQLITE_OK {
 24047  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 24048  	}
 24049  	return rc
 24050  }
 24051  
 24052  var unionModule = sqlite3_module{
 24053  	FxCreate:     0,
 24054  	FxConnect:    0,
 24055  	FxBestIndex:  0,
 24056  	FxDisconnect: 0,
 24057  	FxDestroy:    0,
 24058  	FxOpen:       0,
 24059  	FxClose:      0,
 24060  	FxFilter:     0,
 24061  	FxNext:       0,
 24062  	FxEof:        0,
 24063  	FxColumn:     0,
 24064  	FxRowid:      0,
 24065  }
 24066  
 24067  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 24068  	var rc int32 = SQLITE_OK
 24069  	_ = pApi
 24070  
 24071  	_ = pzErrMsg
 24072  	rc = createUnionVtab(tls, db)
 24073  	return rc
 24074  }
 24075  
 24076  type wholenumber_cursor1 = struct {
 24077  	Fbase    sqlite3_vtab_cursor
 24078  	FiValue  sqlite3_int64
 24079  	FmxValue sqlite3_int64
 24080  }
 24081  
 24082  type wholenumber_cursor = wholenumber_cursor1
 24083  
 24084  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 24085  	var pNew uintptr
 24086  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 24087  	if pNew == uintptr(0) {
 24088  		return SQLITE_NOMEM
 24089  	}
 24090  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 24091  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 24092  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 24093  	return SQLITE_OK
 24094  }
 24095  
 24096  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 24097  	sqlite3.Xsqlite3_free(tls, pVtab)
 24098  	return SQLITE_OK
 24099  }
 24100  
 24101  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 24102  	var pCur uintptr
 24103  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 24104  	if pCur == uintptr(0) {
 24105  		return SQLITE_NOMEM
 24106  	}
 24107  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(wholenumber_cursor{})))
 24108  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 24109  	return SQLITE_OK
 24110  }
 24111  
 24112  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 24113  	sqlite3.Xsqlite3_free(tls, cur)
 24114  	return SQLITE_OK
 24115  }
 24116  
 24117  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 24118  	var pCur uintptr = cur
 24119  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 24120  	return SQLITE_OK
 24121  }
 24122  
 24123  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 24124  	var pCur uintptr = cur
 24125  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 24126  	return SQLITE_OK
 24127  }
 24128  
 24129  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 24130  	var pCur uintptr = cur
 24131  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 24132  	return SQLITE_OK
 24133  }
 24134  
 24135  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 24136  	var pCur uintptr = cur
 24137  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 24138  }
 24139  
 24140  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 24141  	var pCur uintptr = pVtabCursor
 24142  	var v sqlite3_int64
 24143  	var i int32 = 0
 24144  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 24145  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 24146  	if idxNum&3 != 0 {
 24147  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 24148  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 24149  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 24150  		}
 24151  		i++
 24152  	}
 24153  	if idxNum&12 != 0 {
 24154  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) - sqlite3_int64(idxNum>>2&1)
 24155  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 24156  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 24157  		}
 24158  	}
 24159  	return SQLITE_OK
 24160  }
 24161  
 24162  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 24163  	var i int32
 24164  	var idxNum int32 = 0
 24165  	var argvIdx int32 = 1
 24166  	var ltIdx int32 = -1
 24167  	var gtIdx int32 = -1
 24168  	var pConstraint uintptr
 24169  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 24170  	i = 0
 24171  __1:
 24172  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 24173  		goto __3
 24174  	}
 24175  	{
 24176  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 24177  			goto __2
 24178  		}
 24179  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 24180  			idxNum = idxNum | 1
 24181  			ltIdx = i
 24182  		}
 24183  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 24184  			idxNum = idxNum | 2
 24185  			ltIdx = i
 24186  		}
 24187  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 24188  			idxNum = idxNum | 4
 24189  			gtIdx = i
 24190  		}
 24191  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 24192  			idxNum = idxNum | 8
 24193  			gtIdx = i
 24194  		}
 24195  
 24196  	}
 24197  	goto __2
 24198  __2:
 24199  	i++
 24200  	pConstraint += 12
 24201  	goto __1
 24202  	goto __3
 24203  __3:
 24204  	;
 24205  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 24206  	if ltIdx >= 0 {
 24207  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 24208  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 24209  	}
 24210  	if gtIdx >= 0 {
 24211  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 24212  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 24213  	}
 24214  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 24215  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 24216  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 24217  	}
 24218  	if idxNum&12 == 0 {
 24219  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 24220  	} else if idxNum&3 == 0 {
 24221  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 24222  	} else {
 24223  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 24224  	}
 24225  	return SQLITE_OK
 24226  }
 24227  
 24228  var wholenumberModule = sqlite3_module{
 24229  	FxCreate:     0,
 24230  	FxConnect:    0,
 24231  	FxBestIndex:  0,
 24232  	FxDisconnect: 0,
 24233  	FxDestroy:    0,
 24234  	FxOpen:       0,
 24235  	FxClose:      0,
 24236  	FxFilter:     0,
 24237  	FxNext:       0,
 24238  	FxEof:        0,
 24239  	FxColumn:     0,
 24240  	FxRowid:      0,
 24241  }
 24242  
 24243  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 24244  	var rc int32 = SQLITE_OK
 24245  	_ = pApi
 24246  
 24247  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 24248  	return rc
 24249  }
 24250  
 24251  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 24252  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 24253  	var pScript uintptr
 24254  	var i int32
 24255  
 24256  	pScript = tcl.XTcl_NewObj(tls)
 24257  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 24258  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 24259  	for i = 0; i < nArg; i++ {
 24260  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))
 24261  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 24262  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 24263  	}
 24264  
 24265  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 24266  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 24267  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 24268  	} else {
 24269  		tcl.XTcl_BackgroundError(tls, interp)
 24270  	}
 24271  
 24272  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 24273  		var _objPtr uintptr = pScript
 24274  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 24275  			tcl.XTclFreeObj(tls, _objPtr)
 24276  		}
 24277  	}
 24278  }
 24279  
 24280  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24281  	bp := tls.Alloc(496)
 24282  	defer tls.Free(496)
 24283  
 24284  	var ret int32 = TCL_OK
 24285  	var pRbu uintptr = clientData
 24286  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 24287  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 24288  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 24289  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 24290  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 24291  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 24292  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 24293  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 24294  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 24295  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 24296  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 24297  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 24298  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 24299  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 24300  		{},
 24301  	}
 24302  
 24303  	if objc < 2 {
 24304  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 24305  		return TCL_ERROR
 24306  	}
 24307  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 24308  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+360)
 24309  	if ret != 0 {
 24310  		return TCL_ERROR
 24311  	}
 24312  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FnArg {
 24313  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FzUsage)
 24314  		return TCL_ERROR
 24315  	}
 24316  
 24317  	switch *(*int32)(unsafe.Pointer(bp + 360)) {
 24318  	case 0:
 24319  		{
 24320  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 24321  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24322  			break
 24323  
 24324  		}
 24325  
 24326  	case 9:
 24327  		fallthrough
 24328  	case 1:
 24329  		{
 24330  			*(*uintptr)(unsafe.Pointer(bp + 368)) = uintptr(0)
 24331  			var rc int32
 24332  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 24333  			if *(*int32)(unsafe.Pointer(bp + 360)) == 1 {
 24334  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+368)
 24335  			} else {
 24336  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 24337  			}
 24338  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 24339  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24340  
 24341  			} else {
 24342  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24343  				if *(*uintptr)(unsafe.Pointer(bp + 368)) != 0 {
 24344  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 368)), 0))
 24345  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 368)))
 24346  				}
 24347  				ret = TCL_ERROR
 24348  			}
 24349  			break
 24350  
 24351  		}
 24352  
 24353  	case 2:
 24354  		{
 24355  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 24356  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 24357  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 24358  					f func(*libc.TLS, uintptr, int32, uintptr)
 24359  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 24360  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24361  			ret = func() int32 {
 24362  				if rc == SQLITE_OK {
 24363  					return TCL_OK
 24364  				}
 24365  				return TCL_ERROR
 24366  			}()
 24367  			break
 24368  
 24369  		}
 24370  
 24371  	case 3:
 24372  		{
 24373  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 24374  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24375  			ret = func() int32 {
 24376  				if rc == SQLITE_OK {
 24377  					return TCL_OK
 24378  				}
 24379  				return TCL_ERROR
 24380  			}()
 24381  			break
 24382  
 24383  		}
 24384  
 24385  	case 12:
 24386  		fallthrough
 24387  	case 4:
 24388  		{
 24389  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 360)) == 12))
 24390  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0), uintptr(0), uintptr(0))
 24391  			if rc != SQLITE_OK {
 24392  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 24393  				ret = TCL_ERROR
 24394  			}
 24395  			break
 24396  
 24397  		}
 24398  
 24399  	case 5:
 24400  		{
 24401  			var pObj uintptr
 24402  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+376, bp+380)
 24403  
 24404  			pObj = tcl.XTcl_NewObj(tls)
 24405  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))))
 24406  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))))
 24407  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 24408  			break
 24409  
 24410  		}
 24411  
 24412  	case 6:
 24413  		{
 24414  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+384) != 0 {
 24415  				ret = TCL_ERROR
 24416  			} else {
 24417  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 384)))
 24418  				if sqlite3TestMakePointerStr(tls, interp, bp+388, db) != 0 {
 24419  					ret = TCL_ERROR
 24420  				} else {
 24421  					tcl.XTcl_SetResult(tls, interp, bp+388, uintptr(1))
 24422  				}
 24423  			}
 24424  			break
 24425  
 24426  		}
 24427  	case 7:
 24428  		{
 24429  			*(*[6]uintptr)(unsafe.Pointer(bp + 440)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 24430  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 24431  
 24432  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 440 + uintptr(eState)*8)), uintptr(0))
 24433  			break
 24434  
 24435  		}
 24436  	case 8:
 24437  		{
 24438  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 24439  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 24440  			break
 24441  
 24442  		}
 24443  
 24444  	case 10:
 24445  		{
 24446  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+488) != 0 {
 24447  				ret = TCL_ERROR
 24448  			} else {
 24449  				*(*sqlite3_int64)(unsafe.Pointer(bp + 488)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 488)))
 24450  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 488))))
 24451  			}
 24452  			break
 24453  
 24454  		}
 24455  	case 11:
 24456  		{
 24457  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 24458  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 24459  			break
 24460  
 24461  		}
 24462  
 24463  	default:
 24464  		break
 24465  	}
 24466  
 24467  	return ret
 24468  }
 24469  
 24470  type RbuCmd = struct {
 24471  	FzName       uintptr
 24472  	FnArg        int32
 24473  	F__ccgo_pad1 [4]byte
 24474  	FzUsage      uintptr
 24475  }
 24476  
 24477  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24478  	var pRbu uintptr = uintptr(0)
 24479  	var zCmd uintptr
 24480  	var zTarget uintptr
 24481  	var zRbu uintptr
 24482  	var zStateDb uintptr = uintptr(0)
 24483  
 24484  	if objc != 4 && objc != 5 {
 24485  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 24486  		return TCL_ERROR
 24487  	}
 24488  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24489  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 24490  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 24491  	if objc == 5 {
 24492  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 24493  	}
 24494  
 24495  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 24496  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24497  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24498  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24499  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24500  	return TCL_OK
 24501  }
 24502  
 24503  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24504  	var pRbu uintptr = uintptr(0)
 24505  	var zCmd uintptr
 24506  	var zTarget uintptr
 24507  	var zStateDb uintptr = uintptr(0)
 24508  
 24509  	if objc != 3 && objc != 4 {
 24510  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 24511  		return TCL_ERROR
 24512  	}
 24513  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24514  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 24515  	if objc == 4 {
 24516  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 24517  	}
 24518  	if zStateDb != 0 && int32(*(*uint8)(unsafe.Pointer(zStateDb))) == 0 {
 24519  		zStateDb = uintptr(0)
 24520  	}
 24521  
 24522  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 24523  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24524  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24525  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24526  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24527  	return TCL_OK
 24528  }
 24529  
 24530  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24531  	var zName uintptr
 24532  	var zParent uintptr
 24533  	var rc int32
 24534  
 24535  	if objc != 3 && objc != 4 {
 24536  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 24537  		return TCL_ERROR
 24538  	}
 24539  
 24540  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 24541  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)))
 24542  	if int32(*(*uint8)(unsafe.Pointer(zParent))) == 0 {
 24543  		zParent = uintptr(0)
 24544  	}
 24545  
 24546  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 24547  	if rc != SQLITE_OK {
 24548  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24549  		return TCL_ERROR
 24550  	} else if objc == 4 {
 24551  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 24552  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 24553  	}
 24554  
 24555  	tcl.XTcl_ResetResult(tls, interp)
 24556  	return TCL_OK
 24557  }
 24558  
 24559  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24560  	var zName uintptr
 24561  
 24562  	if objc != 2 {
 24563  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 24564  		return TCL_ERROR
 24565  	}
 24566  
 24567  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24568  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 24569  	return TCL_OK
 24570  }
 24571  
 24572  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24573  	bp := tls.Alloc(16)
 24574  	defer tls.Free(16)
 24575  
 24576  	var db uintptr
 24577  
 24578  	if objc != 1 {
 24579  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 24580  		return TCL_ERROR
 24581  	}
 24582  
 24583  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 24584  	if db != uintptr(0) {
 24585  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 24586  		return TCL_ERROR
 24587  	}
 24588  
 24589  	return TCL_OK
 24590  }
 24591  
 24592  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 24593  	var i int32
 24594  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd))/uint64(unsafe.Sizeof(struct {
 24595  		FzName uintptr
 24596  		FxProc uintptr
 24597  	}{})); i++ {
 24598  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 24599  	}
 24600  	return TCL_OK
 24601  }
 24602  
 24603  var aObjCmd = [5]struct {
 24604  	FzName uintptr
 24605  	FxProc uintptr
 24606  }{
 24607  	{FzName: ts + 9790, FxProc: 0},
 24608  	{FzName: ts + 9801, FxProc: 0},
 24609  	{FzName: ts + 9819, FxProc: 0},
 24610  	{FzName: ts + 9841, FxProc: 0},
 24611  	{FzName: ts + 9864, FxProc: 0},
 24612  }
 24613  
 24614  type sqlite31 = sqlite32
 24615  
 24616  type sqlite3_str = sqlite3_str1
 24617  
 24618  type uint8_t = uint8
 24619  type uint16_t = uint16
 24620  type uint32_t = uint32
 24621  type uint64_t = uint64
 24622  
 24623  type int_least8_t = int8
 24624  type int_least16_t = int16
 24625  type int_least32_t = int32
 24626  type int_least64_t = int64
 24627  
 24628  type uint_least8_t = uint8
 24629  type uint_least16_t = uint16
 24630  type uint_least32_t = uint32
 24631  type uint_least64_t = uint64
 24632  
 24633  type int_fast8_t = int8
 24634  type int_fast16_t = int64
 24635  type int_fast32_t = int64
 24636  type int_fast64_t = int64
 24637  
 24638  type uint_fast8_t = uint8
 24639  type uint_fast16_t = uint64
 24640  type uint_fast32_t = uint64
 24641  type uint_fast64_t = uint64
 24642  type uintptr_t = uint64
 24643  
 24644  type intmax_t = int64
 24645  type uintmax_t = uint64
 24646  
 24647  type imaxdiv_t = struct {
 24648  	Fquot int64
 24649  	Frem  int64
 24650  }
 24651  
 24652  type Hash1 = struct {
 24653  	Fhtsize uint32
 24654  	Fcount  uint32
 24655  	Ffirst  uintptr
 24656  	Fht     uintptr
 24657  }
 24658  
 24659  type Hash = Hash1
 24660  type HashElem1 = struct {
 24661  	Fnext uintptr
 24662  	Fprev uintptr
 24663  	Fdata uintptr
 24664  	FpKey uintptr
 24665  }
 24666  
 24667  type HashElem = HashElem1
 24668  
 24669  type _ht = struct {
 24670  	Fcount       uint32
 24671  	F__ccgo_pad1 [4]byte
 24672  	Fchain       uintptr
 24673  }
 24674  
 24675  type max_align_t = struct {
 24676  	F__max_align_ll int64
 24677  	F__max_align_ld float64
 24678  }
 24679  type i16 = int16_t
 24680  type i8 = int8_t
 24681  
 24682  type tRowcnt = u32
 24683  
 24684  type LogEst = int16_t
 24685  
 24686  type uptr = uintptr_t
 24687  
 24688  type BusyHandler1 = struct {
 24689  	FxBusyHandler uintptr
 24690  	FpBusyArg     uintptr
 24691  	FnBusy        int32
 24692  	F__ccgo_pad1  [4]byte
 24693  }
 24694  
 24695  type BusyHandler = BusyHandler1
 24696  
 24697  type AggInfo1 = struct {
 24698  	FdirectMode     u8
 24699  	FuseSortingIdx  u8
 24700  	F__ccgo_pad1    [2]byte
 24701  	FsortingIdx     int32
 24702  	FsortingIdxPTab int32
 24703  	FnSortingColumn int32
 24704  	FmnReg          int32
 24705  	FmxReg          int32
 24706  	FpGroupBy       uintptr
 24707  	FaCol           uintptr
 24708  	FnColumn        int32
 24709  	FnAccumulator   int32
 24710  	FaFunc          uintptr
 24711  	FnFunc          int32
 24712  	FselId          u32
 24713  }
 24714  
 24715  type AggInfo = AggInfo1
 24716  type AuthContext1 = struct {
 24717  	FzAuthContext uintptr
 24718  	FpParse       uintptr
 24719  }
 24720  
 24721  type AuthContext = AuthContext1
 24722  type AutoincInfo1 = struct {
 24723  	FpNext  uintptr
 24724  	FpTab   uintptr
 24725  	FiDb    int32
 24726  	FregCtr int32
 24727  }
 24728  
 24729  type AutoincInfo = AutoincInfo1
 24730  type CollSeq1 = struct {
 24731  	FzName       uintptr
 24732  	Fenc         u8
 24733  	F__ccgo_pad1 [7]byte
 24734  	FpUser       uintptr
 24735  	FxCmp        uintptr
 24736  	FxDel        uintptr
 24737  }
 24738  
 24739  type CollSeq = CollSeq1
 24740  type Column1 = struct {
 24741  	FzCnName     uintptr
 24742  	FnotNull     uint8
 24743  	F__ccgo_pad1 [1]byte
 24744  	Faffinity    uint8
 24745  	FszEst       u8
 24746  	FhName       u8
 24747  	F__ccgo_pad2 [1]byte
 24748  	FiDflt       u16
 24749  	FcolFlags    u16
 24750  	F__ccgo_pad3 [6]byte
 24751  }
 24752  
 24753  type Column = Column1
 24754  type Cte1 = struct {
 24755  	FzName       uintptr
 24756  	FpCols       uintptr
 24757  	FpSelect     uintptr
 24758  	FzCteErr     uintptr
 24759  	FpUse        uintptr
 24760  	FeM10d       u8
 24761  	F__ccgo_pad1 [7]byte
 24762  }
 24763  
 24764  type Cte = Cte1
 24765  type CteUse1 = struct {
 24766  	FnUse        int32
 24767  	FaddrM9e     int32
 24768  	FregRtn      int32
 24769  	FiCur        int32
 24770  	FnRowEst     LogEst
 24771  	FeM10d       u8
 24772  	F__ccgo_pad1 [1]byte
 24773  }
 24774  
 24775  type CteUse = CteUse1
 24776  type Db1 = struct {
 24777  	FzDbSName     uintptr
 24778  	FpBt          uintptr
 24779  	Fsafety_level u8
 24780  	FbSyncSet     u8
 24781  	F__ccgo_pad1  [6]byte
 24782  	FpSchema      uintptr
 24783  }
 24784  
 24785  type Db = Db1
 24786  type DbFixer1 = struct {
 24787  	FpParse      uintptr
 24788  	Fw           Walker
 24789  	FpSchema     uintptr
 24790  	FbTemp       u8
 24791  	F__ccgo_pad1 [7]byte
 24792  	FzDb         uintptr
 24793  	FzType       uintptr
 24794  	FpName       uintptr
 24795  }
 24796  
 24797  type DbFixer = DbFixer1
 24798  type Schema1 = struct {
 24799  	Fschema_cookie int32
 24800  	FiGeneration   int32
 24801  	FtblHash       Hash
 24802  	FidxHash       Hash
 24803  	FtrigHash      Hash
 24804  	FfkeyHash      Hash
 24805  	FpSeqTab       uintptr
 24806  	Ffile_format   u8
 24807  	Fenc           u8
 24808  	FschemaFlags   u16
 24809  	Fcache_size    int32
 24810  }
 24811  
 24812  type Schema = Schema1
 24813  type Expr1 = struct {
 24814  	Fop          u8
 24815  	FaffExpr     uint8
 24816  	Fop2         u8
 24817  	F__ccgo_pad1 [1]byte
 24818  	Fflags       u32
 24819  	Fu           struct{ FzToken uintptr }
 24820  	FpLeft       uintptr
 24821  	FpRight      uintptr
 24822  	Fx           struct{ FpList uintptr }
 24823  	FnHeight     int32
 24824  	FiTable      int32
 24825  	FiColumn     ynVar
 24826  	FiAgg        i16
 24827  	Fw           struct{ FiJoin int32 }
 24828  	FpAggInfo    uintptr
 24829  	Fy           struct{ FpTab uintptr }
 24830  }
 24831  
 24832  type Expr = Expr1
 24833  type ExprList1 = struct {
 24834  	FnExpr  int32
 24835  	FnAlloc int32
 24836  	Fa      [1]struct {
 24837  		FpExpr  uintptr
 24838  		FzEName uintptr
 24839  		Ffg     struct {
 24840  			F__ccgo_pad1 [0]uint32
 24841  			FsortFlags   u8
 24842  			F__ccgo_pad2 [3]byte
 24843  			FeEName      uint16
 24844  			F__ccgo_pad3 [2]byte
 24845  		}
 24846  		Fu struct {
 24847  			F__ccgo_pad1 [0]uint32
 24848  			Fx           struct {
 24849  				FiOrderByCol u16
 24850  				FiAlias      u16
 24851  			}
 24852  		}
 24853  		F__ccgo_pad1 [4]byte
 24854  	}
 24855  }
 24856  
 24857  type ExprList = ExprList1
 24858  type FKey1 = struct {
 24859  	FpFrom       uintptr
 24860  	FpNextFrom   uintptr
 24861  	FzTo         uintptr
 24862  	FpNextTo     uintptr
 24863  	FpPrevTo     uintptr
 24864  	FnCol        int32
 24865  	FisDeferred  u8
 24866  	FaAction     [2]u8
 24867  	F__ccgo_pad1 [1]byte
 24868  	FapTrigger   [2]uintptr
 24869  	FaCol        [1]struct {
 24870  		FiFrom       int32
 24871  		F__ccgo_pad1 [4]byte
 24872  		FzCol        uintptr
 24873  	}
 24874  }
 24875  
 24876  type FKey = FKey1
 24877  type FuncDestructor1 = struct {
 24878  	FnRef        int32
 24879  	F__ccgo_pad1 [4]byte
 24880  	FxDestroy    uintptr
 24881  	FpUserData   uintptr
 24882  }
 24883  
 24884  type FuncDestructor = FuncDestructor1
 24885  type FuncDef1 = struct {
 24886  	FnArg        i8
 24887  	F__ccgo_pad1 [3]byte
 24888  	FfuncFlags   u32
 24889  	FpUserData   uintptr
 24890  	FpNext       uintptr
 24891  	FxSFunc      uintptr
 24892  	FxFinalize   uintptr
 24893  	FxValue      uintptr
 24894  	FxInverse    uintptr
 24895  	FzName       uintptr
 24896  	Fu           struct{ FpHash uintptr }
 24897  }
 24898  
 24899  type FuncDef = FuncDef1
 24900  type FuncDefHash1 = struct{ Fa [23]uintptr }
 24901  
 24902  type FuncDefHash = FuncDefHash1
 24903  type IdList1 = struct {
 24904  	FnId         int32
 24905  	FeU4         u8
 24906  	F__ccgo_pad1 [3]byte
 24907  	Fa           [1]struct {
 24908  		FzName uintptr
 24909  		Fu4    struct {
 24910  			F__ccgo_pad1 [0]uint64
 24911  			Fidx         int32
 24912  			F__ccgo_pad2 [4]byte
 24913  		}
 24914  	}
 24915  }
 24916  
 24917  type IdList = IdList1
 24918  type Index1 = struct {
 24919  	FzName         uintptr
 24920  	FaiColumn      uintptr
 24921  	FaiRowLogEst   uintptr
 24922  	FpTable        uintptr
 24923  	FzColAff       uintptr
 24924  	FpNext         uintptr
 24925  	FpSchema       uintptr
 24926  	FaSortOrder    uintptr
 24927  	FazColl        uintptr
 24928  	FpPartIdxWhere uintptr
 24929  	FaColExpr      uintptr
 24930  	Ftnum          Pgno
 24931  	FszIdxRow      LogEst
 24932  	FnKeyCol       u16
 24933  	FnColumn       u16
 24934  	FonError       u8
 24935  	F__ccgo_pad1   [1]byte
 24936  	FidxType       uint16
 24937  	F__ccgo_pad2   [2]byte
 24938  	FnSample       int32
 24939  	FnSampleCol    int32
 24940  	FaAvgEq        uintptr
 24941  	FaSample       uintptr
 24942  	FaiRowEst      uintptr
 24943  	FnRowEst0      tRowcnt
 24944  	F__ccgo_pad3   [4]byte
 24945  	FcolNotIdxed   Bitmask
 24946  }
 24947  
 24948  type Index = Index1
 24949  type IndexSample1 = struct {
 24950  	Fp           uintptr
 24951  	Fn           int32
 24952  	F__ccgo_pad1 [4]byte
 24953  	FanEq        uintptr
 24954  	FanLt        uintptr
 24955  	FanDLt       uintptr
 24956  }
 24957  
 24958  type IndexSample = IndexSample1
 24959  type KeyInfo1 = struct {
 24960  	FnRef        u32
 24961  	Fenc         u8
 24962  	F__ccgo_pad1 [1]byte
 24963  	FnKeyField   u16
 24964  	FnAllField   u16
 24965  	F__ccgo_pad2 [6]byte
 24966  	Fdb          uintptr
 24967  	FaSortFlags  uintptr
 24968  	FaColl       [1]uintptr
 24969  }
 24970  
 24971  type KeyInfo = KeyInfo1
 24972  type Lookaside1 = struct {
 24973  	FbDisable    u32
 24974  	Fsz          u16
 24975  	FszTrue      u16
 24976  	FbMalloced   u8
 24977  	F__ccgo_pad1 [3]byte
 24978  	FnSlot       u32
 24979  	FanStat      [3]u32
 24980  	F__ccgo_pad2 [4]byte
 24981  	FpInit       uintptr
 24982  	FpFree       uintptr
 24983  	FpSmallInit  uintptr
 24984  	FpSmallFree  uintptr
 24985  	FpMiddle     uintptr
 24986  	FpStart      uintptr
 24987  	FpEnd        uintptr
 24988  }
 24989  
 24990  type Lookaside = Lookaside1
 24991  type LookasideSlot1 = struct{ FpNext uintptr }
 24992  
 24993  type LookasideSlot = LookasideSlot1
 24994  type Module1 = struct {
 24995  	FpModule     uintptr
 24996  	FzName       uintptr
 24997  	FnRefModule  int32
 24998  	F__ccgo_pad1 [4]byte
 24999  	FpAux        uintptr
 25000  	FxDestroy    uintptr
 25001  	FpEpoTab     uintptr
 25002  }
 25003  
 25004  type Module = Module1
 25005  type NameContext1 = struct {
 25006  	FpParse      uintptr
 25007  	FpSrcList    uintptr
 25008  	FuNC         struct{ FpEList uintptr }
 25009  	FpNext       uintptr
 25010  	FnRef        int32
 25011  	FnNcErr      int32
 25012  	FncFlags     int32
 25013  	F__ccgo_pad1 [4]byte
 25014  	FpWinSelect  uintptr
 25015  }
 25016  
 25017  type NameContext = NameContext1
 25018  type OnOrUsing1 = struct {
 25019  	FpOn    uintptr
 25020  	FpUsing uintptr
 25021  }
 25022  
 25023  type OnOrUsing = OnOrUsing1
 25024  type Parse1 = struct {
 25025  	Fdb               uintptr
 25026  	FzErrMsg          uintptr
 25027  	FpVdbe            uintptr
 25028  	Frc               int32
 25029  	FcolNamesSet      u8
 25030  	FcheckSchema      u8
 25031  	Fnested           u8
 25032  	FnTempReg         u8
 25033  	FisMultiWrite     u8
 25034  	FmayAbort         u8
 25035  	FhasCompound      u8
 25036  	FokConstFactor    u8
 25037  	FdisableLookaside u8
 25038  	FdisableVtab      u8
 25039  	FwithinRJSubrtn   u8
 25040  	F__ccgo_pad1      [1]byte
 25041  	FnRangeReg        int32
 25042  	FiRangeReg        int32
 25043  	FnErr             int32
 25044  	FnTab             int32
 25045  	FnMem             int32
 25046  	FszOpAlloc        int32
 25047  	FiSelfTab         int32
 25048  	FnLabel           int32
 25049  	FnLabelAlloc      int32
 25050  	F__ccgo_pad2      [4]byte
 25051  	FaLabel           uintptr
 25052  	FpConstExpr       uintptr
 25053  	FconstraintName   Token
 25054  	FwriteMask        yDbMask
 25055  	FcookieMask       yDbMask
 25056  	FregRowid         int32
 25057  	FregRoot          int32
 25058  	FnMaxArg          int32
 25059  	FnSelect          int32
 25060  	FnTableLock       int32
 25061  	F__ccgo_pad3      [4]byte
 25062  	FaTableLock       uintptr
 25063  	FpAinc            uintptr
 25064  	FpToplevel        uintptr
 25065  	FpTriggerTab      uintptr
 25066  	FpTriggerPrg      uintptr
 25067  	FpCleanup         uintptr
 25068  	Fu1               struct {
 25069  		F__ccgo_pad1 [0]uint64
 25070  		FaddrCrTab   int32
 25071  		F__ccgo_pad2 [4]byte
 25072  	}
 25073  	FnQueryLoop      u32
 25074  	Foldmask         u32
 25075  	Fnewmask         u32
 25076  	FeTriggerOp      u8
 25077  	FbReturning      u8
 25078  	FeOrconf         u8
 25079  	FdisableTriggers u8
 25080  	FaTempReg        [8]int32
 25081  	FpOuterParse     uintptr
 25082  	FsNameToken      Token
 25083  	FsLastToken      Token
 25084  	FnVar            ynVar
 25085  	FiPkSortOrder    u8
 25086  	Fexplain         u8
 25087  	FeParseMode      u8
 25088  	F__ccgo_pad4     [3]byte
 25089  	FnVtabLock       int32
 25090  	FnHeight         int32
 25091  	FaddrExplain     int32
 25092  	F__ccgo_pad5     [4]byte
 25093  	FpVList          uintptr
 25094  	FpReprepare      uintptr
 25095  	FzTail           uintptr
 25096  	FpNewTable       uintptr
 25097  	FpNewIndex       uintptr
 25098  	FpNewTrigger     uintptr
 25099  	FzAuthContext    uintptr
 25100  	FsArg            Token
 25101  	FapVtabLock      uintptr
 25102  	FpWith           uintptr
 25103  	FpRename         uintptr
 25104  }
 25105  
 25106  type Parse = Parse1
 25107  type ParseCleanup1 = struct {
 25108  	FpNext    uintptr
 25109  	FpPtr     uintptr
 25110  	FxCleanup uintptr
 25111  }
 25112  
 25113  type ParseCleanup = ParseCleanup1
 25114  type PreUpdate1 = struct {
 25115  	Fv            uintptr
 25116  	FpCsr         uintptr
 25117  	Fop           int32
 25118  	F__ccgo_pad1  [4]byte
 25119  	FaRecord      uintptr
 25120  	Fkeyinfo      KeyInfo
 25121  	FpUnpacked    uintptr
 25122  	FpNewUnpacked uintptr
 25123  	FiNewReg      int32
 25124  	FiBlobWrite   int32
 25125  	FiKey1        i64
 25126  	FiKey2        i64
 25127  	FaNew         uintptr
 25128  	FpTab         uintptr
 25129  	FpPk          uintptr
 25130  }
 25131  
 25132  type PrintfArguments1 = struct {
 25133  	FnArg  int32
 25134  	FnUsed int32
 25135  	FapArg uintptr
 25136  }
 25137  
 25138  type PrintfArguments = PrintfArguments1
 25139  type Returning1 = struct {
 25140  	FpParse      uintptr
 25141  	FpReturnEL   uintptr
 25142  	FretTrig     Trigger
 25143  	FretTStep    TriggerStep
 25144  	FiRetCur     int32
 25145  	FnRetCol     int32
 25146  	FiRetReg     int32
 25147  	F__ccgo_pad1 [4]byte
 25148  }
 25149  
 25150  type Returning = Returning1
 25151  type Savepoint1 = struct {
 25152  	FzName            uintptr
 25153  	FnDeferredCons    i64
 25154  	FnDeferredImmCons i64
 25155  	FpNext            uintptr
 25156  }
 25157  
 25158  type Savepoint = Savepoint1
 25159  type Select1 = struct {
 25160  	Fop           u8
 25161  	F__ccgo_pad1  [1]byte
 25162  	FnSelectRow   LogEst
 25163  	FselFlags     u32
 25164  	FiLimit       int32
 25165  	FiOffset      int32
 25166  	FselId        u32
 25167  	FaddrOpenEphm [2]int32
 25168  	F__ccgo_pad2  [4]byte
 25169  	FpEList       uintptr
 25170  	FpSrc         uintptr
 25171  	FpWhere       uintptr
 25172  	FpGroupBy     uintptr
 25173  	FpHaving      uintptr
 25174  	FpOrderBy     uintptr
 25175  	FpPrior       uintptr
 25176  	FpNext        uintptr
 25177  	FpLimit       uintptr
 25178  	FpWith        uintptr
 25179  	FpWin         uintptr
 25180  	FpWinDefn     uintptr
 25181  }
 25182  
 25183  type Select = Select1
 25184  type SelectDest1 = struct {
 25185  	FeDest       u8
 25186  	F__ccgo_pad1 [3]byte
 25187  	FiSDParm     int32
 25188  	FiSDParm2    int32
 25189  	FiSdst       int32
 25190  	FnSdst       int32
 25191  	F__ccgo_pad2 [4]byte
 25192  	FzAffSdst    uintptr
 25193  	FpOrderBy    uintptr
 25194  }
 25195  
 25196  type SelectDest = SelectDest1
 25197  type SrcItem1 = struct {
 25198  	FpSchema     uintptr
 25199  	FzDatabase   uintptr
 25200  	FzName       uintptr
 25201  	FzAlias      uintptr
 25202  	FpTab        uintptr
 25203  	FpSelect     uintptr
 25204  	FaddrFillSub int32
 25205  	FregReturn   int32
 25206  	FregResult   int32
 25207  	Ffg          struct {
 25208  		F__ccgo_pad1 [0]uint32
 25209  		Fjointype    u8
 25210  		F__ccgo_pad2 [3]byte
 25211  		FnotIndexed  uint16
 25212  		F__ccgo_pad3 [2]byte
 25213  	}
 25214  	FiCursor int32
 25215  	Fu3      struct{ FpOn uintptr }
 25216  	FcolUsed Bitmask
 25217  	Fu1      struct{ FzIndexedBy uintptr }
 25218  	Fu2      struct{ FpIBIndex uintptr }
 25219  }
 25220  
 25221  type SrcItem = SrcItem1
 25222  type SrcList1 = struct {
 25223  	FnSrc   int32
 25224  	FnAlloc u32
 25225  	Fa      [1]SrcItem
 25226  }
 25227  
 25228  type SrcList = SrcList1
 25229  type StrAccum = sqlite3_str1
 25230  type Table1 = struct {
 25231  	FzName      uintptr
 25232  	FaCol       uintptr
 25233  	FpIndex     uintptr
 25234  	FzColAff    uintptr
 25235  	FpCheck     uintptr
 25236  	Ftnum       Pgno
 25237  	FnTabRef    u32
 25238  	FtabFlags   u32
 25239  	FiPKey      i16
 25240  	FnCol       i16
 25241  	FnNVCol     i16
 25242  	FnRowLogEst LogEst
 25243  	FszTabRow   LogEst
 25244  	FkeyConf    u8
 25245  	FeTabType   u8
 25246  	Fu          struct {
 25247  		Ftab struct {
 25248  			FaddColOffset int32
 25249  			F__ccgo_pad1  [4]byte
 25250  			FpFKey        uintptr
 25251  			FpDfltList    uintptr
 25252  		}
 25253  	}
 25254  	FpTrigger uintptr
 25255  	FpSchema  uintptr
 25256  }
 25257  
 25258  type Table = Table1
 25259  type Token1 = struct {
 25260  	Fz           uintptr
 25261  	Fn           uint32
 25262  	F__ccgo_pad1 [4]byte
 25263  }
 25264  
 25265  type Token = Token1
 25266  type Trigger1 = struct {
 25267  	FzName       uintptr
 25268  	Ftable       uintptr
 25269  	Fop          u8
 25270  	Ftr_tm       u8
 25271  	FbReturning  u8
 25272  	F__ccgo_pad1 [5]byte
 25273  	FpWhen       uintptr
 25274  	FpColumns    uintptr
 25275  	FpSchema     uintptr
 25276  	FpTabSchema  uintptr
 25277  	Fstep_list   uintptr
 25278  	FpNext       uintptr
 25279  }
 25280  
 25281  type Trigger = Trigger1
 25282  type TriggerPrg1 = struct {
 25283  	FpTrigger    uintptr
 25284  	FpNext       uintptr
 25285  	FpProgram    uintptr
 25286  	Forconf      int32
 25287  	FaColmask    [2]u32
 25288  	F__ccgo_pad1 [4]byte
 25289  }
 25290  
 25291  type TriggerPrg = TriggerPrg1
 25292  type TriggerStep1 = struct {
 25293  	Fop          u8
 25294  	Forconf      u8
 25295  	F__ccgo_pad1 [6]byte
 25296  	FpTrig       uintptr
 25297  	FpSelect     uintptr
 25298  	FzTarget     uintptr
 25299  	FpFrom       uintptr
 25300  	FpWhere      uintptr
 25301  	FpExprList   uintptr
 25302  	FpIdList     uintptr
 25303  	FpUpsert     uintptr
 25304  	FzSpan       uintptr
 25305  	FpNext       uintptr
 25306  	FpLast       uintptr
 25307  }
 25308  
 25309  type TriggerStep = TriggerStep1
 25310  type UnpackedRecord1 = struct {
 25311  	FpKeyInfo    uintptr
 25312  	FaMem        uintptr
 25313  	Fu           struct{ Fz uintptr }
 25314  	Fn           int32
 25315  	FnField      u16
 25316  	Fdefault_rc  i8
 25317  	FerrCode     u8
 25318  	Fr1          i8
 25319  	Fr2          i8
 25320  	FeqSeen      u8
 25321  	F__ccgo_pad1 [5]byte
 25322  }
 25323  
 25324  type UnpackedRecord = UnpackedRecord1
 25325  type Upsert1 = struct {
 25326  	FpUpsertTarget      uintptr
 25327  	FpUpsertTargetWhere uintptr
 25328  	FpUpsertSet         uintptr
 25329  	FpUpsertWhere       uintptr
 25330  	FpNextUpsert        uintptr
 25331  	FisDoUpdate         u8
 25332  	F__ccgo_pad1        [7]byte
 25333  	FpToFree            uintptr
 25334  	FpUpsertIdx         uintptr
 25335  	FpUpsertSrc         uintptr
 25336  	FregData            int32
 25337  	FiDataCur           int32
 25338  	FiIdxCur            int32
 25339  	F__ccgo_pad2        [4]byte
 25340  }
 25341  
 25342  type Upsert = Upsert1
 25343  type VTable1 = struct {
 25344  	Fdb          uintptr
 25345  	FpMod        uintptr
 25346  	FpVtab       uintptr
 25347  	FnRef        int32
 25348  	FbConstraint u8
 25349  	FeVtabRisk   u8
 25350  	F__ccgo_pad1 [2]byte
 25351  	FiSavepoint  int32
 25352  	F__ccgo_pad2 [4]byte
 25353  	FpNext       uintptr
 25354  }
 25355  
 25356  type VTable = VTable1
 25357  type Walker1 = struct {
 25358  	FpParse           uintptr
 25359  	FxExprCallback    uintptr
 25360  	FxSelectCallback  uintptr
 25361  	FxSelectCallback2 uintptr
 25362  	FwalkerDepth      int32
 25363  	FeCode            u16
 25364  	F__ccgo_pad1      [2]byte
 25365  	Fu                struct{ FpNC uintptr }
 25366  }
 25367  
 25368  type Walker = Walker1
 25369  type Window1 = struct {
 25370  	FzName          uintptr
 25371  	FzBase          uintptr
 25372  	FpPartition     uintptr
 25373  	FpOrderBy       uintptr
 25374  	FeFrmType       u8
 25375  	FeStart         u8
 25376  	FeEnd           u8
 25377  	FbImplicitFrame u8
 25378  	FeExclude       u8
 25379  	F__ccgo_pad1    [3]byte
 25380  	FpStart         uintptr
 25381  	FpEnd           uintptr
 25382  	FppThis         uintptr
 25383  	FpNextWin       uintptr
 25384  	FpFilter        uintptr
 25385  	FpWFunc         uintptr
 25386  	FiEphCsr        int32
 25387  	FregAccum       int32
 25388  	FregResult      int32
 25389  	FcsrApp         int32
 25390  	FregApp         int32
 25391  	FregPart        int32
 25392  	FpOwner         uintptr
 25393  	FnBufferCol     int32
 25394  	FiArgCol        int32
 25395  	FregOne         int32
 25396  	FregStartRowid  int32
 25397  	FregEndRowid    int32
 25398  	FbExprArgs      u8
 25399  	F__ccgo_pad2    [3]byte
 25400  }
 25401  
 25402  type Window = Window1
 25403  type With1 = struct {
 25404  	FnCte   int32
 25405  	FbView  int32
 25406  	FpOuter uintptr
 25407  	Fa      [1]Cte
 25408  }
 25409  
 25410  type With = With1
 25411  
 25412  type Bitmask = u64
 25413  
 25414  type VList = int32
 25415  
 25416  type Pgno = u32
 25417  
 25418  type PgHdr1 = struct {
 25419  	FpPage      uintptr
 25420  	FpData      uintptr
 25421  	FpExtra     uintptr
 25422  	FpCache     uintptr
 25423  	FpDirty     uintptr
 25424  	FpPager     uintptr
 25425  	Fpgno       Pgno
 25426  	Fflags      u16
 25427  	FnRef       i16
 25428  	FpDirtyNext uintptr
 25429  	FpDirtyPrev uintptr
 25430  }
 25431  
 25432  type DbPage = PgHdr1
 25433  
 25434  type Btree1 = struct {
 25435  	Fdb             uintptr
 25436  	FpBt            uintptr
 25437  	FinTrans        u8
 25438  	Fsharable       u8
 25439  	Flocked         u8
 25440  	FhasIncrblobCur u8
 25441  	FwantToLock     int32
 25442  	FnBackup        int32
 25443  	FiBDataVersion  u32
 25444  	FpNext          uintptr
 25445  	FpPrev          uintptr
 25446  	Flock           BtLock
 25447  }
 25448  
 25449  type BtCursor1 = struct {
 25450  	FeState        u8
 25451  	FcurFlags      u8
 25452  	FcurPagerFlags u8
 25453  	Fhints         u8
 25454  	FskipNext      int32
 25455  	FpBtree        uintptr
 25456  	FaOverflow     uintptr
 25457  	FpKey          uintptr
 25458  	FpBt           uintptr
 25459  	FpNext         uintptr
 25460  	Finfo          CellInfo
 25461  	FnKey          i64
 25462  	FpgnoRoot      Pgno
 25463  	FiPage         i8
 25464  	FcurIntKey     u8
 25465  	Fix            u16
 25466  	FaiIdx         [19]u16
 25467  	F__ccgo_pad1   [2]byte
 25468  	FpKeyInfo      uintptr
 25469  	FpPage         uintptr
 25470  	FapPage        [19]uintptr
 25471  }
 25472  
 25473  type BtShared1 = struct {
 25474  	FpPager          uintptr
 25475  	Fdb              uintptr
 25476  	FpCursor         uintptr
 25477  	FpPage1          uintptr
 25478  	FopenFlags       u8
 25479  	FautoVacuum      u8
 25480  	FincrVacuum      u8
 25481  	FbDoTruncate     u8
 25482  	FinTransaction   u8
 25483  	Fmax1bytePayload u8
 25484  	FnReserveWanted  u8
 25485  	F__ccgo_pad1     [1]byte
 25486  	FbtsFlags        u16
 25487  	FmaxLocal        u16
 25488  	FminLocal        u16
 25489  	FmaxLeaf         u16
 25490  	FminLeaf         u16
 25491  	F__ccgo_pad2     [2]byte
 25492  	FpageSize        u32
 25493  	FusableSize      u32
 25494  	FnTransaction    int32
 25495  	FnPage           u32
 25496  	F__ccgo_pad3     [4]byte
 25497  	FpSchema         uintptr
 25498  	FxFreeSchema     uintptr
 25499  	Fmutex           uintptr
 25500  	FpHasContent     uintptr
 25501  	FnRef            int32
 25502  	F__ccgo_pad4     [4]byte
 25503  	FpNext           uintptr
 25504  	FpLock           uintptr
 25505  	FpWriter         uintptr
 25506  	FpTmpSpace       uintptr
 25507  	FnPreformatSize  int32
 25508  	F__ccgo_pad5     [4]byte
 25509  }
 25510  
 25511  type BtreePayload1 = struct {
 25512  	FpKey        uintptr
 25513  	FnKey        sqlite3_int64
 25514  	FpData       uintptr
 25515  	FaMem        uintptr
 25516  	FnMem        u16
 25517  	F__ccgo_pad1 [2]byte
 25518  	FnData       int32
 25519  	FnZero       int32
 25520  	F__ccgo_pad2 [4]byte
 25521  }
 25522  
 25523  type BtreePayload = BtreePayload1
 25524  
 25525  type Vdbe1 = struct {
 25526  	Fdb                 uintptr
 25527  	FpPrev              uintptr
 25528  	FpNext              uintptr
 25529  	FpParse             uintptr
 25530  	FnVar               ynVar
 25531  	F__ccgo_pad1        [2]byte
 25532  	FnMem               int32
 25533  	FnCursor            int32
 25534  	FcacheCtr           u32
 25535  	Fpc                 int32
 25536  	Frc                 int32
 25537  	FnChange            i64
 25538  	FiStatement         int32
 25539  	F__ccgo_pad2        [4]byte
 25540  	FiCurrentTime       i64
 25541  	FnFkConstraint      i64
 25542  	FnStmtDefCons       i64
 25543  	FnStmtDefImmCons    i64
 25544  	FaMem               uintptr
 25545  	FapArg              uintptr
 25546  	FapCsr              uintptr
 25547  	FaVar               uintptr
 25548  	FaOp                uintptr
 25549  	FnOp                int32
 25550  	FnOpAlloc           int32
 25551  	FaColName           uintptr
 25552  	FpResultSet         uintptr
 25553  	FzErrMsg            uintptr
 25554  	FpVList             uintptr
 25555  	FstartTime          i64
 25556  	FnResColumn         u16
 25557  	FerrorAction        u8
 25558  	FminWriteFileFormat u8
 25559  	FprepFlags          u8
 25560  	FeVdbeState         u8
 25561  	F__ccgo_pad3        [2]byte
 25562  	Fexpired            uint8
 25563  	F__ccgo_pad4        [3]byte
 25564  	FbtreeMask          yDbMask
 25565  	FlockMask           yDbMask
 25566  	FaCounter           [9]u32
 25567  	FzSql               uintptr
 25568  	FpFree              uintptr
 25569  	FpFrame             uintptr
 25570  	FpDelFrame          uintptr
 25571  	FnFrame             int32
 25572  	Fexpmask            u32
 25573  	FpProgram           uintptr
 25574  	FpAuxData           uintptr
 25575  }
 25576  
 25577  type SubProgram1 = struct {
 25578  	FaOp         uintptr
 25579  	FnOp         int32
 25580  	FnMem        int32
 25581  	FnCsr        int32
 25582  	F__ccgo_pad1 [4]byte
 25583  	FaOnce       uintptr
 25584  	Ftoken       uintptr
 25585  	FpNext       uintptr
 25586  }
 25587  
 25588  type SubProgram = SubProgram1
 25589  
 25590  type VdbeOp1 = struct {
 25591  	Fopcode u8
 25592  	Fp4type int8
 25593  	Fp5     u16
 25594  	Fp1     int32
 25595  	Fp2     int32
 25596  	Fp3     int32
 25597  	Fp4     struct {
 25598  		F__ccgo_pad1 [0]uint64
 25599  		Fi           int32
 25600  		F__ccgo_pad2 [4]byte
 25601  	}
 25602  	FzComment uintptr
 25603  }
 25604  
 25605  type p4union = struct {
 25606  	F__ccgo_pad1 [0]uint64
 25607  	Fi           int32
 25608  	F__ccgo_pad2 [4]byte
 25609  }
 25610  
 25611  type VdbeOp = VdbeOp1
 25612  
 25613  type VdbeOpList1 = struct {
 25614  	Fopcode u8
 25615  	Fp1     int8
 25616  	Fp2     int8
 25617  	Fp3     int8
 25618  }
 25619  
 25620  type VdbeOpList = VdbeOpList1
 25621  
 25622  type RecordCompare = uintptr
 25623  
 25624  type PgHdr = PgHdr1
 25625  
 25626  type sqlite3_xauth = uintptr
 25627  
 25628  type sqlite3InitInfo = struct {
 25629  	FnewTnum       Pgno
 25630  	FiDb           u8
 25631  	Fbusy          u8
 25632  	F__ccgo_pad1   [2]byte
 25633  	ForphanTrigger uint8
 25634  	F__ccgo_pad2   [7]byte
 25635  	FazInit        uintptr
 25636  }
 25637  
 25638  type sColMap = struct {
 25639  	FiFrom       int32
 25640  	F__ccgo_pad1 [4]byte
 25641  	FzCol        uintptr
 25642  }
 25643  
 25644  type AggInfo_col = struct {
 25645  	FpTab          uintptr
 25646  	FpCExpr        uintptr
 25647  	FiTable        int32
 25648  	FiMem          int32
 25649  	FiColumn       i16
 25650  	FiSorterColumn i16
 25651  	F__ccgo_pad1   [4]byte
 25652  }
 25653  
 25654  type AggInfo_func = struct {
 25655  	FpFExpr      uintptr
 25656  	FpFunc       uintptr
 25657  	FiMem        int32
 25658  	FiDistinct   int32
 25659  	FiDistAddr   int32
 25660  	F__ccgo_pad1 [4]byte
 25661  }
 25662  
 25663  type ynVar = i16
 25664  
 25665  type ExprList_item = struct {
 25666  	FpExpr  uintptr
 25667  	FzEName uintptr
 25668  	Ffg     struct {
 25669  		F__ccgo_pad1 [0]uint32
 25670  		FsortFlags   u8
 25671  		F__ccgo_pad2 [3]byte
 25672  		FeEName      uint16
 25673  		F__ccgo_pad3 [2]byte
 25674  	}
 25675  	Fu struct {
 25676  		F__ccgo_pad1 [0]uint32
 25677  		Fx           struct {
 25678  			FiOrderByCol u16
 25679  			FiAlias      u16
 25680  		}
 25681  	}
 25682  	F__ccgo_pad1 [4]byte
 25683  }
 25684  
 25685  type IdList_item = struct {
 25686  	FzName uintptr
 25687  	Fu4    struct {
 25688  		F__ccgo_pad1 [0]uint64
 25689  		Fidx         int32
 25690  		F__ccgo_pad2 [4]byte
 25691  	}
 25692  }
 25693  
 25694  type yDbMask = uint32
 25695  
 25696  type InitData = struct {
 25697  	Fdb          uintptr
 25698  	FpzErrMsg    uintptr
 25699  	FiDb         int32
 25700  	Frc          int32
 25701  	FmInitFlags  u32
 25702  	FnInitRow    u32
 25703  	FmxPage      Pgno
 25704  	F__ccgo_pad1 [4]byte
 25705  }
 25706  
 25707  type Sqlite3Config = struct {
 25708  	FbMemstat            int32
 25709  	FbCoreMutex          u8
 25710  	FbFullMutex          u8
 25711  	FbOpenUri            u8
 25712  	FbUseCis             u8
 25713  	FbSmallMalloc        u8
 25714  	FbExtraSchemaChecks  u8
 25715  	F__ccgo_pad1         [2]byte
 25716  	FmxStrlen            int32
 25717  	FneverCorrupt        int32
 25718  	FszLookaside         int32
 25719  	FnLookaside          int32
 25720  	FnStmtSpill          int32
 25721  	Fm                   sqlite3_mem_methods
 25722  	Fmutex               sqlite3_mutex_methods
 25723  	Fpcache2             sqlite3_pcache_methods2
 25724  	FpHeap               uintptr
 25725  	FnHeap               int32
 25726  	FmnReq               int32
 25727  	FmxReq               int32
 25728  	F__ccgo_pad2         [4]byte
 25729  	FszMmap              sqlite3_int64
 25730  	FmxMmap              sqlite3_int64
 25731  	FpPage               uintptr
 25732  	FszPage              int32
 25733  	FnPage               int32
 25734  	FmxParserStack       int32
 25735  	FsharedCacheEnabled  int32
 25736  	FszPma               u32
 25737  	FisInit              int32
 25738  	FinProgress          int32
 25739  	FisMutexInit         int32
 25740  	FisMallocInit        int32
 25741  	FisPCacheInit        int32
 25742  	FnRefInitMutex       int32
 25743  	F__ccgo_pad3         [4]byte
 25744  	FpInitMutex          uintptr
 25745  	FxLog                uintptr
 25746  	FpLogArg             uintptr
 25747  	FmxMemdbSize         sqlite3_int64
 25748  	FxTestCallback       uintptr
 25749  	FbLocaltimeFault     int32
 25750  	F__ccgo_pad4         [4]byte
 25751  	FxAltLocaltime       uintptr
 25752  	FiOnceResetThreshold int32
 25753  	FszSorterRef         u32
 25754  	FiPrngSeed           uint32
 25755  	F__ccgo_pad5         [4]byte
 25756  }
 25757  
 25758  type BoxGeomCtx1 = struct {
 25759  	Finterp  uintptr
 25760  	FpScript uintptr
 25761  }
 25762  
 25763  type BoxGeomCtx = BoxGeomCtx1
 25764  
 25765  type BoxQueryCtx1 = struct {
 25766  	Finterp  uintptr
 25767  	FpScript uintptr
 25768  }
 25769  
 25770  type BoxQueryCtx = BoxQueryCtx1
 25771  
 25772  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 25773  	var p uintptr = pCtx
 25774  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 25775  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25776  		var _objPtr uintptr = (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript
 25777  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25778  			tcl.XTclFreeObj(tls, _objPtr)
 25779  		}
 25780  	}
 25781  	sqlite3.Xsqlite3_free(tls, p)
 25782  }
 25783  
 25784  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 25785  	bp := tls.Alloc(96)
 25786  	defer tls.Free(96)
 25787  
 25788  	var rc int32 = SQLITE_OK
 25789  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 25790  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 25791  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 25792  		var pScript uintptr = uintptr(0)
 25793  		var pParam uintptr = uintptr(0)
 25794  		var pCoord uintptr = uintptr(0)
 25795  		var ii int32
 25796  		var pRes uintptr
 25797  
 25798  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 25799  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 25800  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 25801  
 25802  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]uint8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp, (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext))
 25803  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25804  
 25805  		pParam = tcl.XTcl_NewObj(tls)
 25806  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 25807  			tcl.XTcl_ListObjAppendElement(tls,
 25808  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 25809  		}
 25810  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 25811  
 25812  		pCoord = tcl.XTcl_NewObj(tls)
 25813  		for ii = 0; ii < nCoord; ii++ {
 25814  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 25815  		}
 25816  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 25817  
 25818  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]uint8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 25819  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25820  
 25821  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 25822  		if rc != TCL_OK {
 25823  			rc = SQLITE_ERROR
 25824  		} else {
 25825  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 25826  			*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 25827  
 25828  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 25829  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88) != 0 {
 25830  				return TCL_ERROR
 25831  			}
 25832  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 25833  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))))
 25834  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 25835  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 25836  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 25837  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 25838  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25839  						rc = SQLITE_ERROR
 25840  					} else {
 25841  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 25842  						if pBGCtx == uintptr(0) {
 25843  							rc = SQLITE_NOMEM
 25844  						} else {
 25845  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 25846  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 25847  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 25848  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 25849  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 25850  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 25851  						}
 25852  					}
 25853  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 25854  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25855  						rc = SQLITE_ERROR
 25856  					}
 25857  				}
 25858  			}
 25859  		}
 25860  	}
 25861  	return rc
 25862  }
 25863  
 25864  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 25865  	var ii int32
 25866  
 25867  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 25868  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 25869  		return SQLITE_ERROR
 25870  	}
 25871  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 25872  		return SQLITE_ERROR
 25873  	}
 25874  
 25875  	for ii = 0; ii < nCoord; ii = ii + 2 {
 25876  		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)) {
 25877  			*(*int32)(unsafe.Pointer(pRes)) = 0
 25878  			return SQLITE_OK
 25879  		}
 25880  	}
 25881  
 25882  	*(*int32)(unsafe.Pointer(pRes)) = 1
 25883  
 25884  	return SQLITE_OK
 25885  }
 25886  
 25887  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25888  	bp := tls.Alloc(80)
 25889  	defer tls.Free(80)
 25890  
 25891  	var pCtx uintptr
 25892  
 25893  	if objc != 3 {
 25894  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25895  		return TCL_ERROR
 25896  	}
 25897  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 25898  		return TCL_ERROR
 25899  	}
 25900  
 25901  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 25902  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25903  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25904  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25905  
 25906  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 25907  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 25908  	}{box_geom})), pCtx)
 25909  
 25910  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+16, ts+9889, libc.VaList(bp, pCtx))
 25911  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25912  	return TCL_OK
 25913  }
 25914  
 25915  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 25916  	bp := tls.Alloc(60)
 25917  	defer tls.Free(60)
 25918  
 25919  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 25920  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 25921  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 25922  	var pEval uintptr
 25923  	var pArg uintptr
 25924  	var pTmp uintptr = uintptr(0)
 25925  	var rc int32
 25926  	var ii int32
 25927  
 25928  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 25929  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25930  	pArg = tcl.XTcl_NewObj(tls)
 25931  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 25932  
 25933  	pTmp = tcl.XTcl_NewObj(tls)
 25934  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25935  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 25936  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 25937  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25938  	}
 25939  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 25940  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25941  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25942  		var _objPtr uintptr = pTmp
 25943  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25944  			tcl.XTclFreeObj(tls, _objPtr)
 25945  		}
 25946  	}
 25947  
 25948  	pTmp = tcl.XTcl_NewObj(tls)
 25949  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25950  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 25951  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 25952  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25953  	}
 25954  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 25955  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25956  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 25957  		var _objPtr uintptr = pTmp
 25958  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25959  			tcl.XTclFreeObj(tls, _objPtr)
 25960  		}
 25961  	}
 25962  
 25963  	pTmp = tcl.XTcl_NewObj(tls)
 25964  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25965  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 25966  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 25967  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25968  	}
 25969  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 25970  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25971  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 25972  		var _objPtr uintptr = pTmp
 25973  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25974  			tcl.XTclFreeObj(tls, _objPtr)
 25975  		}
 25976  	}
 25977  
 25978  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 25979  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 25980  
 25981  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 25982  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 25983  
 25984  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 25985  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 25986  
 25987  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 25988  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 25989  
 25990  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 25991  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 25992  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*8)), -1))
 25993  
 25994  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 25995  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 25996  		rc = SQLITE_ERROR
 25997  	} else {
 25998  		rc = SQLITE_OK
 25999  	}
 26000  
 26001  	if rc == SQLITE_OK {
 26002  		*(*float64)(unsafe.Pointer(bp + 48)) = 0.0
 26003  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 26004  		*(*int32)(unsafe.Pointer(bp + 56)) = 0
 26005  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 26006  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26007  
 26008  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+32, bp+40) != 0 ||
 26009  			*(*int32)(unsafe.Pointer(bp + 32)) != 2 ||
 26010  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 1*8)), bp+48) != 0 ||
 26011  			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 {
 26012  			rc = SQLITE_ERROR
 26013  		} else {
 26014  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 48))
 26015  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 56))
 26016  		}
 26017  	}
 26018  
 26019  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 26020  		var _objPtr uintptr = pArg
 26021  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26022  			tcl.XTclFreeObj(tls, _objPtr)
 26023  		}
 26024  	}
 26025  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 26026  		var _objPtr uintptr = pEval
 26027  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26028  			tcl.XTclFreeObj(tls, _objPtr)
 26029  		}
 26030  	}
 26031  	return rc
 26032  }
 26033  
 26034  func box_query_destroy(tls *libc.TLS, p uintptr) {
 26035  	var pCtx uintptr = p
 26036  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26037  		var _objPtr uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript
 26038  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26039  			tcl.XTclFreeObj(tls, _objPtr)
 26040  		}
 26041  	}
 26042  	tcl.XTcl_Free(tls, pCtx)
 26043  }
 26044  
 26045  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26046  	bp := tls.Alloc(8)
 26047  	defer tls.Free(8)
 26048  
 26049  	var pCtx uintptr
 26050  
 26051  	if objc != 3 {
 26052  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 26053  		return TCL_ERROR
 26054  	}
 26055  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 26056  		return TCL_ERROR
 26057  	}
 26058  
 26059  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 26060  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 26061  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26062  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 26063  
 26064  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 26065  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 26066  			f func(*libc.TLS, uintptr) int32
 26067  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 26068  
 26069  	tcl.XTcl_ResetResult(tls, interp)
 26070  	return TCL_OK
 26071  }
 26072  
 26073  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 26074  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 26075  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26076  	}{register_box_geom})), uintptr(0), uintptr(0))
 26077  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 26078  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26079  	}{register_box_query})), uintptr(0), uintptr(0))
 26080  	return TCL_OK
 26081  }
 26082  
 26083  type TestSession1 = struct {
 26084  	FpSession      uintptr
 26085  	Finterp        uintptr
 26086  	FpFilterScript uintptr
 26087  }
 26088  
 26089  type TestSession = TestSession1
 26090  
 26091  type TestStreamInput1 = struct {
 26092  	FnStream     int32
 26093  	F__ccgo_pad1 [4]byte
 26094  	FaData       uintptr
 26095  	FnData       int32
 26096  	FiData       int32
 26097  }
 26098  
 26099  type TestStreamInput = TestStreamInput1
 26100  
 26101  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 26102  	bp := tls.Alloc(88)
 26103  	defer tls.Free(88)
 26104  
 26105  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 26106  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 26107  		return TCL_ERROR
 26108  	}
 26109  
 26110  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26111  	return TCL_OK
 26112  }
 26113  
 26114  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 26115  	bp := tls.Alloc(8)
 26116  	defer tls.Free(8)
 26117  
 26118  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 26119  	var rc int32
 26120  
 26121  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 26122  
 26123  	if rc == SQLITE_OK {
 26124  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 26125  	}
 26126  
 26127  	if rc == SQLITE_OK {
 26128  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 26129  	}
 26130  
 26131  	if rc == SQLITE_OK {
 26132  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 26133  	}
 26134  
 26135  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 26136  
 26137  	return rc
 26138  }
 26139  
 26140  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26141  	bp := tls.Alloc(40)
 26142  	defer tls.Free(40)
 26143  
 26144  	var zSql uintptr
 26145  
 26146  	var rc int32
 26147  
 26148  	if objc != 3 {
 26149  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 26150  		return TCL_ERROR
 26151  	}
 26152  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 26153  		return TCL_ERROR
 26154  	}
 26155  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26156  
 26157  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+24, bp+32)
 26158  	if rc != SQLITE_OK {
 26159  		tcl.XTcl_ResetResult(tls, interp)
 26160  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 26161  		return TCL_ERROR
 26162  	}
 26163  
 26164  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 24))))
 26165  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26166  	return TCL_OK
 26167  }
 26168  
 26169  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 26170  	bp := tls.Alloc(4)
 26171  	defer tls.Free(4)
 26172  
 26173  	var pObj uintptr
 26174  	*(*int32)(unsafe.Pointer(bp)) = 0
 26175  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 26176  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 26177  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 26178  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26179  		var _objPtr uintptr = pName
 26180  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26181  			tcl.XTclFreeObj(tls, _objPtr)
 26182  		}
 26183  	}
 26184  	if pObj != 0 {
 26185  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 26186  	}
 26187  	return *(*int32)(unsafe.Pointer(bp))
 26188  }
 26189  
 26190  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 26191  	bp := tls.Alloc(24)
 26192  	defer tls.Free(24)
 26193  
 26194  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26195  	if zErr != 0 {
 26196  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 26197  		sqlite3.Xsqlite3_free(tls, zErr)
 26198  	}
 26199  	return TCL_ERROR
 26200  }
 26201  
 26202  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 26203  	bp := tls.Alloc(4)
 26204  	defer tls.Free(4)
 26205  
 26206  	var p uintptr = pCtx
 26207  	var pEval uintptr
 26208  	var rc int32
 26209  	*(*int32)(unsafe.Pointer(bp)) = 0
 26210  
 26211  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 26212  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26213  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 26214  	if rc == TCL_OK {
 26215  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 26216  	}
 26217  	if rc == TCL_OK {
 26218  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 26219  	}
 26220  	if rc != TCL_OK {
 26221  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 26222  	}
 26223  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26224  		var _objPtr uintptr = pEval
 26225  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26226  			tcl.XTclFreeObj(tls, _objPtr)
 26227  		}
 26228  	}
 26229  
 26230  	return *(*int32)(unsafe.Pointer(bp))
 26231  }
 26232  
 26233  type TestSessionsBlob1 = struct {
 26234  	Fp           uintptr
 26235  	Fn           int32
 26236  	F__ccgo_pad1 [4]byte
 26237  }
 26238  
 26239  type TestSessionsBlob = TestSessionsBlob1
 26240  
 26241  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 26242  	var pBlob uintptr = pCtx
 26243  	var pNew uintptr
 26244  
 26245  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 26246  	if pNew == uintptr(0) {
 26247  		return SQLITE_NOMEM
 26248  	}
 26249  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 26250  	libc.Xmemcpy(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint64(nData))
 26251  	*(*int32)(unsafe.Pointer(pBlob + 8)) += nData
 26252  	return SQLITE_OK
 26253  }
 26254  
 26255  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26256  	bp := tls.Alloc(44)
 26257  	defer tls.Free(44)
 26258  
 26259  	var p uintptr = clientData
 26260  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 26261  
 26262  	var rc int32
 26263  
 26264  	if objc < 2 {
 26265  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 26266  		return TCL_ERROR
 26267  	}
 26268  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26269  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 26270  	if rc != TCL_OK {
 26271  		return rc
 26272  	}
 26273  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 26274  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 26275  		return TCL_ERROR
 26276  	}
 26277  
 26278  	switch *(*int32)(unsafe.Pointer(bp)) {
 26279  	case 0:
 26280  		{
 26281  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26282  			if int32(*(*uint8)(unsafe.Pointer(zArg))) == '*' && int32(*(*uint8)(unsafe.Pointer(zArg + 1))) == 0 {
 26283  				zArg = uintptr(0)
 26284  			}
 26285  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 26286  			if rc != SQLITE_OK {
 26287  				return test_session_error(tls, interp, rc, uintptr(0))
 26288  			}
 26289  			break
 26290  
 26291  		}
 26292  
 26293  	case 7:
 26294  		fallthrough
 26295  	case 1:
 26296  		{
 26297  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 8)) = TestSessionsBlob{}
 26298  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 26299  				var pCtx uintptr = bp + 8
 26300  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26301  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26302  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26303  					}{testStreamOutput})), pCtx)
 26304  				} else {
 26305  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26306  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26307  					}{testStreamOutput})), pCtx)
 26308  				}
 26309  			} else {
 26310  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26311  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+8+8, bp+8)
 26312  				} else {
 26313  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+8+8, bp+8)
 26314  				}
 26315  			}
 26316  			if rc == SQLITE_OK {
 26317  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fn))
 26318  			}
 26319  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp)
 26320  			if rc != SQLITE_OK {
 26321  				return test_session_error(tls, interp, rc, uintptr(0))
 26322  			}
 26323  			break
 26324  
 26325  		}
 26326  
 26327  	case 2:
 26328  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26329  		break
 26330  
 26331  	case 3:
 26332  		{
 26333  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 26334  				return TCL_ERROR
 26335  			}
 26336  			*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 24)))
 26337  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 24)) != 0)))
 26338  			break
 26339  
 26340  		}
 26341  
 26342  	case 4:
 26343  		{
 26344  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+28) != 0 {
 26345  				return TCL_ERROR
 26346  			}
 26347  			*(*int32)(unsafe.Pointer(bp + 28)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 28)))
 26348  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 28)) != 0)))
 26349  			break
 26350  
 26351  		}
 26352  
 26353  	case 5:
 26354  		{
 26355  			var val int32
 26356  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 26357  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(val != 0)))
 26358  			break
 26359  
 26360  		}
 26361  
 26362  	case 6:
 26363  		{
 26364  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26365  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26366  					var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26367  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26368  						tcl.XTclFreeObj(tls, _objPtr)
 26369  					}
 26370  				}
 26371  			}
 26372  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 26373  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26374  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 26375  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26376  				f func(*libc.TLS, uintptr, uintptr) int32
 26377  			}{test_table_filter})), clientData)
 26378  			break
 26379  
 26380  		}
 26381  
 26382  	case 8:
 26383  		{
 26384  			*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 26385  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 26386  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 26387  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))),
 26388  				bp+32)
 26389  
 26390  			if rc != 0 {
 26391  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26392  			}
 26393  			break
 26394  
 26395  		}
 26396  
 26397  	case 9:
 26398  		{
 26399  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 26400  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 26401  			break
 26402  
 26403  		}
 26404  
 26405  	case 10:
 26406  		{
 26407  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 26408  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 26409  			break
 26410  
 26411  		}
 26412  	case 11:
 26413  		{
 26414  			var rc int32
 26415  
 26416  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 26417  				return TCL_ERROR
 26418  			}
 26419  			rc = sqlite3.Xsqlite3session_object_config(tls,
 26420  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+40)
 26421  			if rc != SQLITE_OK {
 26422  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26423  			} else {
 26424  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 26425  			}
 26426  			break
 26427  
 26428  		}
 26429  	}
 26430  
 26431  	return TCL_OK
 26432  }
 26433  
 26434  type SessionSubcmd = struct {
 26435  	FzSub        uintptr
 26436  	FnArg        int32
 26437  	F__ccgo_pad1 [4]byte
 26438  	FzMsg        uintptr
 26439  	FiSub        int32
 26440  	F__ccgo_pad2 [4]byte
 26441  }
 26442  
 26443  var aSub = [13]SessionSubcmd{
 26444  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 26445  	{FzSub: ts + 10128, FzMsg: ts + 584},
 26446  	{FzSub: ts + 10138, FzMsg: ts + 584},
 26447  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 26448  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 26449  	{FzSub: ts + 10166, FzMsg: ts + 584},
 26450  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 26451  	{FzSub: ts + 10194, FzMsg: ts + 584},
 26452  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 26453  	{FzSub: ts + 10219, FzMsg: ts + 584},
 26454  	{FzSub: ts + 10231, FzMsg: ts + 584},
 26455  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 26456  	{},
 26457  }
 26458  
 26459  func test_session_del(tls *libc.TLS, clientData uintptr) {
 26460  	var p uintptr = clientData
 26461  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26462  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26463  			var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26464  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26465  				tcl.XTclFreeObj(tls, _objPtr)
 26466  			}
 26467  		}
 26468  	}
 26469  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 26470  	tcl.XTcl_Free(tls, p)
 26471  }
 26472  
 26473  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26474  	bp := tls.Alloc(92)
 26475  	defer tls.Free(92)
 26476  
 26477  	var db uintptr
 26478  
 26479  	var rc int32
 26480  	var p uintptr
 26481  	*(*int32)(unsafe.Pointer(bp + 88)) = -1
 26482  
 26483  	if objc != 4 {
 26484  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 26485  		return TCL_ERROR
 26486  	}
 26487  
 26488  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) {
 26489  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26490  		return TCL_ERROR
 26491  	}
 26492  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26493  
 26494  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 26495  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TestSession{})))
 26496  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))), p)
 26497  	if rc != SQLITE_OK {
 26498  		tcl.XTcl_Free(tls, p)
 26499  		return test_session_error(tls, interp, rc, uintptr(0))
 26500  	}
 26501  
 26502  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 26503  
 26504  	*(*int32)(unsafe.Pointer(bp + 88)) = 1
 26505  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 26506  
 26507  	tcl.XTcl_CreateObjCommand(tls,
 26508  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 26509  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26510  		}{test_session_cmd})), p,
 26511  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 26512  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26513  	return TCL_OK
 26514  }
 26515  
 26516  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 26517  	if pVal == uintptr(0) {
 26518  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26519  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26520  	} else {
 26521  		var pObj uintptr
 26522  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 26523  		case SQLITE_NULL:
 26524  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 26525  			pObj = tcl.XTcl_NewObj(tls)
 26526  			break
 26527  			fallthrough
 26528  		case SQLITE_INTEGER:
 26529  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 26530  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 26531  			break
 26532  			fallthrough
 26533  		case SQLITE_FLOAT:
 26534  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 26535  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 26536  			break
 26537  			fallthrough
 26538  		case SQLITE_TEXT:
 26539  			{
 26540  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 26541  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 26542  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 26543  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 26544  				break
 26545  
 26546  			}
 26547  			fallthrough
 26548  		default:
 26549  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 26550  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 26551  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 26552  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 26553  			break
 26554  		}
 26555  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 26556  	}
 26557  }
 26558  
 26559  type TestConflictHandler1 = struct {
 26560  	Finterp          uintptr
 26561  	FpConflictScript uintptr
 26562  	FpFilterScript   uintptr
 26563  }
 26564  
 26565  type TestConflictHandler = TestConflictHandler1
 26566  
 26567  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 26568  	bp := tls.Alloc(4)
 26569  	defer tls.Free(4)
 26570  
 26571  	var n int32
 26572  
 26573  	var zObj uintptr
 26574  
 26575  	n = int32(libc.Xstrlen(tls, z))
 26576  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 26577  
 26578  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint64(n))))
 26579  }
 26580  
 26581  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 26582  	bp := tls.Alloc(4)
 26583  	defer tls.Free(4)
 26584  
 26585  	var p uintptr = pCtx
 26586  	*(*int32)(unsafe.Pointer(bp)) = 1
 26587  	var pEval uintptr
 26588  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26589  
 26590  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 26591  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26592  
 26593  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 26594  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 26595  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 26596  		tcl.XTcl_BackgroundError(tls, interp)
 26597  	}
 26598  
 26599  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26600  		var _objPtr uintptr = pEval
 26601  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26602  			tcl.XTclFreeObj(tls, _objPtr)
 26603  		}
 26604  	}
 26605  	return *(*int32)(unsafe.Pointer(bp))
 26606  }
 26607  
 26608  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26609  	bp := tls.Alloc(104)
 26610  	defer tls.Free(104)
 26611  
 26612  	var p uintptr = pCtx
 26613  	var pEval uintptr
 26614  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26615  	*(*int32)(unsafe.Pointer(bp + 100)) = 0
 26616  
 26617  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 26618  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26619  
 26620  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26621  
 26622  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 26623  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+16)
 26624  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 26625  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 26626  	} else {
 26627  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 26628  			func() uintptr {
 26629  				if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26630  					return ts + 10307
 26631  				}
 26632  				return func() uintptr {
 26633  					if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_UPDATE {
 26634  						return ts + 10314
 26635  					}
 26636  					return ts + 10321
 26637  				}()
 26638  			}(), -1))
 26639  
 26640  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 26641  
 26642  		switch eConf {
 26643  		case SQLITE_CHANGESET_DATA:
 26644  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 26645  			break
 26646  			fallthrough
 26647  		case SQLITE_CHANGESET_NOTFOUND:
 26648  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 26649  			break
 26650  			fallthrough
 26651  		case SQLITE_CHANGESET_CONFLICT:
 26652  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 26653  			break
 26654  			fallthrough
 26655  		case SQLITE_CHANGESET_CONSTRAINT:
 26656  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 26657  			break
 26658  		}
 26659  
 26660  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26661  			var i int32
 26662  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 26663  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26664  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+24)
 26665  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26666  			}
 26667  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 26668  		}
 26669  
 26670  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26671  			var i int32
 26672  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 26673  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26674  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+32)
 26675  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26676  			}
 26677  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 26678  		}
 26679  
 26680  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 26681  			var i int32
 26682  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 26683  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26684  				var rc int32
 26685  				_ = rc
 26686  
 26687  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+40)
 26688  
 26689  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 40)))
 26690  			}
 26691  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 26692  		}
 26693  
 26694  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 26695  			eConf == SQLITE_CHANGESET_NOTFOUND {
 26696  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+48)
 26697  			_ = rc
 26698  
 26699  		} else {
 26700  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+56)
 26701  			_ = rc
 26702  
 26703  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+56)
 26704  
 26705  		}
 26706  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_DELETE {
 26707  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+64)
 26708  			_ = rc
 26709  
 26710  		} else {
 26711  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+72)
 26712  			_ = rc
 26713  
 26714  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+72)
 26715  
 26716  		}
 26717  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26718  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+80)
 26719  			_ = rc
 26720  
 26721  		} else {
 26722  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+88)
 26723  			_ = rc
 26724  
 26725  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+88)
 26726  
 26727  		}
 26728  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 26729  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+96)
 26730  			_ = rc
 26731  
 26732  		}
 26733  
 26734  	}
 26735  
 26736  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 26737  		tcl.XTcl_BackgroundError(tls, interp)
 26738  	} else {
 26739  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26740  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 26741  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_OMIT
 26742  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 26743  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_REPLACE
 26744  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 26745  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_ABORT
 26746  		} else {
 26747  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+100)
 26748  		}
 26749  	}
 26750  
 26751  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26752  		var _objPtr uintptr = pEval
 26753  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26754  			tcl.XTclFreeObj(tls, _objPtr)
 26755  		}
 26756  	}
 26757  	return *(*int32)(unsafe.Pointer(bp + 100))
 26758  }
 26759  
 26760  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26761  	bp := tls.Alloc(32)
 26762  	defer tls.Free(32)
 26763  
 26764  	var i int32
 26765  	var x int32 = 0
 26766  
 26767  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26768  
 26769  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26770  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26771  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 26772  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 26773  			x++
 26774  		}
 26775  	}
 26776  
 26777  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26778  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26779  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+24)
 26780  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26781  			x++
 26782  		}
 26783  	}
 26784  
 26785  	if eConf == SQLITE_CHANGESET_DATA {
 26786  		return SQLITE_CHANGESET_REPLACE
 26787  	}
 26788  	return SQLITE_CHANGESET_OMIT
 26789  }
 26790  
 26791  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 26792  	var p uintptr = pCtx
 26793  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 26794  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 26795  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 26796  
 26797  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 26798  	if pAlloc == uintptr(0) {
 26799  		return SQLITE_NOMEM
 26800  	}
 26801  	sqlite3.Xsqlite3_free(tls, pAlloc)
 26802  
 26803  	if nRet > nReq {
 26804  		nRet = nReq
 26805  	}
 26806  	if nRet > nRem {
 26807  		nRet = nRem
 26808  	}
 26809  
 26810  	if nRet > 0 {
 26811  		libc.Xmemcpy(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint64(nRet))
 26812  		*(*int32)(unsafe.Pointer(p + 20)) += nRet
 26813  	}
 26814  
 26815  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 26816  	return SQLITE_OK
 26817  }
 26818  
 26819  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26820  	bp := tls.Alloc(156)
 26821  	defer tls.Free(156)
 26822  
 26823  	var db uintptr
 26824  
 26825  	var rc int32
 26826  	var pChangeset uintptr
 26827  
 26828  	*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 26829  	*(*int32)(unsafe.Pointer(bp + 152)) = 0
 26830  	var flags int32 = 0
 26831  
 26832  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26833  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26834  
 26835  	if bV2 != 0 {
 26836  		if objc > 1 {
 26837  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26838  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26839  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 26840  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 26841  				objc--
 26842  				objv += 8
 26843  			}
 26844  		}
 26845  		if objc > 1 {
 26846  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26847  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26848  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 26849  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 26850  				objc--
 26851  				objv += 8
 26852  			}
 26853  		}
 26854  	}
 26855  
 26856  	if objc != 4 && objc != 5 {
 26857  		var zMsg uintptr
 26858  		if bV2 != 0 {
 26859  			zMsg = ts + 10388
 26860  		} else {
 26861  			zMsg = ts + 10459
 26862  		}
 26863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 26864  		return TCL_ERROR
 26865  	}
 26866  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) {
 26867  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), 0))
 26868  		return TCL_ERROR
 26869  	}
 26870  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData))
 26871  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+112)
 26872  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26873  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpFilterScript = func() uintptr {
 26874  		if objc == 5 {
 26875  			return *(*uintptr)(unsafe.Pointer(objv + 4*8))
 26876  		}
 26877  		return uintptr(0)
 26878  	}()
 26879  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).Finterp = interp
 26880  
 26881  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 26882  		if bV2 == 0 {
 26883  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26884  				func() uintptr {
 26885  					if objc == 5 {
 26886  						return *(*uintptr)(unsafe.Pointer(&struct {
 26887  							f func(*libc.TLS, uintptr, uintptr) int32
 26888  						}{test_filter_handler}))
 26889  					}
 26890  					return uintptr(0)
 26891  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26892  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26893  				}{test_conflict_handler})), bp+120)
 26894  		} else {
 26895  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26896  				func() uintptr {
 26897  					if objc == 5 {
 26898  						return *(*uintptr)(unsafe.Pointer(&struct {
 26899  							f func(*libc.TLS, uintptr, uintptr) int32
 26900  						}{test_filter_handler}))
 26901  					}
 26902  					return uintptr(0)
 26903  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26904  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26905  				}{test_conflict_handler})), bp+120,
 26906  				bp+144, bp+152, flags)
 26907  		}
 26908  	} else {
 26909  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 26910  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 112))
 26911  		if bV2 == 0 {
 26912  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26913  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26914  			}{testStreamInput})), bp+24,
 26915  				func() uintptr {
 26916  					if objc == 5 {
 26917  						return *(*uintptr)(unsafe.Pointer(&struct {
 26918  							f func(*libc.TLS, uintptr, uintptr) int32
 26919  						}{test_filter_handler}))
 26920  					}
 26921  					return uintptr(0)
 26922  				}(),
 26923  				*(*uintptr)(unsafe.Pointer(&struct {
 26924  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26925  				}{test_conflict_handler})), bp+120)
 26926  		} else {
 26927  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26928  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26929  			}{testStreamInput})), bp+24,
 26930  				func() uintptr {
 26931  					if objc == 5 {
 26932  						return *(*uintptr)(unsafe.Pointer(&struct {
 26933  							f func(*libc.TLS, uintptr, uintptr) int32
 26934  						}{test_filter_handler}))
 26935  					}
 26936  					return uintptr(0)
 26937  				}(),
 26938  				*(*uintptr)(unsafe.Pointer(&struct {
 26939  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26940  				}{test_conflict_handler})), bp+120,
 26941  				bp+144, bp+152, flags)
 26942  		}
 26943  	}
 26944  
 26945  	if rc != SQLITE_OK {
 26946  		return test_session_error(tls, interp, rc, uintptr(0))
 26947  	} else {
 26948  		tcl.XTcl_ResetResult(tls, interp)
 26949  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 144)) != 0 {
 26950  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 144)), *(*int32)(unsafe.Pointer(bp + 152))))
 26951  		}
 26952  	}
 26953  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 144)))
 26954  	return TCL_OK
 26955  }
 26956  
 26957  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26958  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 26959  }
 26960  
 26961  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26962  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 26963  }
 26964  
 26965  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26966  	bp := tls.Alloc(92)
 26967  	defer tls.Free(92)
 26968  
 26969  	var db uintptr
 26970  
 26971  	var rc int32
 26972  	var pChangeset uintptr
 26973  
 26974  	if objc != 3 {
 26975  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 26976  		return TCL_ERROR
 26977  	}
 26978  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) {
 26979  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26980  		return TCL_ERROR
 26981  	}
 26982  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26983  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+88)
 26984  
 26985  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 88)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 26986  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 26987  	}{replace_handler})), uintptr(0))
 26988  	if rc != SQLITE_OK {
 26989  		return test_session_error(tls, interp, rc, uintptr(0))
 26990  	}
 26991  	tcl.XTcl_ResetResult(tls, interp)
 26992  	return TCL_OK
 26993  }
 26994  
 26995  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26996  	bp := tls.Alloc(40)
 26997  	defer tls.Free(40)
 26998  
 26999  	var rc int32
 27000  
 27001  	if objc != 2 {
 27002  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 27003  		return TCL_ERROR
 27004  	}
 27005  
 27006  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27007  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 27008  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27009  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 27010  
 27011  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 27012  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 27013  			*(*uintptr)(unsafe.Pointer(&struct {
 27014  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27015  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 27016  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 27017  			}{testStreamOutput})), bp+24)
 27018  	} else {
 27019  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+24+8, bp+24)
 27020  	}
 27021  	if rc != SQLITE_OK {
 27022  		rc = test_session_error(tls, interp, rc, uintptr(0))
 27023  	} else {
 27024  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 27025  	}
 27026  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 27027  	return rc
 27028  }
 27029  
 27030  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27031  	bp := tls.Alloc(64)
 27032  	defer tls.Free(64)
 27033  
 27034  	var rc int32
 27035  
 27036  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 48)) = TestSessionsBlob{}
 27037  
 27038  	if objc != 3 {
 27039  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 27040  		return TCL_ERROR
 27041  	}
 27042  
 27043  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27044  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27045  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 27046  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24+16)
 27047  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27048  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 27049  
 27050  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 27051  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 27052  			*(*uintptr)(unsafe.Pointer(&struct {
 27053  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27054  			}{testStreamInput})), bp,
 27055  			*(*uintptr)(unsafe.Pointer(&struct {
 27056  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27057  			}{testStreamInput})), bp+24,
 27058  			*(*uintptr)(unsafe.Pointer(&struct {
 27059  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 27060  			}{testStreamOutput})), bp+48)
 27061  	} else {
 27062  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 27063  			(*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)
 27064  	}
 27065  
 27066  	if rc != SQLITE_OK {
 27067  		rc = test_session_error(tls, interp, rc, uintptr(0))
 27068  	} else {
 27069  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fn))
 27070  	}
 27071  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp)
 27072  	return rc
 27073  }
 27074  
 27075  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27076  	bp := tls.Alloc(104)
 27077  	defer tls.Free(104)
 27078  
 27079  	var pChangeset uintptr
 27080  
 27081  	var rc int32
 27082  	var pVarname uintptr
 27083  	var pCS uintptr
 27084  	var pScript uintptr
 27085  	var isCheckNext int32 = 0
 27086  	var isInvert int32 = 0
 27087  
 27088  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27089  
 27090  	for objc > 1 {
 27091  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27092  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 27093  		if int32(*(*uint8)(unsafe.Pointer(zOpt))) != '-' {
 27094  			break
 27095  		}
 27096  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 27097  			isInvert = 1
 27098  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 27099  			isCheckNext = 1
 27100  		} else {
 27101  			break
 27102  		}
 27103  		objv += 8
 27104  		objc--
 27105  	}
 27106  	if objc != 4 {
 27107  		tcl.XTcl_WrongNumArgs(tls,
 27108  			interp, 1, objv, ts+10544)
 27109  		return TCL_ERROR
 27110  	}
 27111  
 27112  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 27113  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 27114  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 27115  
 27116  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+24)
 27117  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27118  	if isInvert != 0 {
 27119  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 27120  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 27121  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset, f)
 27122  		} else {
 27123  			var pCtx uintptr = bp
 27124  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 27125  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 27126  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 27127  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27128  			}{testStreamInput})), pCtx, f)
 27129  		}
 27130  	} else {
 27131  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 27132  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset)
 27133  		} else {
 27134  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 27135  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 27136  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 27137  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27138  			}{testStreamInput})), bp)
 27139  		}
 27140  	}
 27141  	if rc != SQLITE_OK {
 27142  		return test_session_error(tls, interp, rc, uintptr(0))
 27143  	}
 27144  
 27145  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) {
 27146  		var pVar uintptr
 27147  		var pOld uintptr
 27148  		var pNew uintptr
 27149  
 27150  		var zPK uintptr
 27151  
 27152  		var i int32
 27153  
 27154  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+40) {
 27155  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27156  			return TCL_ERROR
 27157  		}
 27158  
 27159  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+48, bp+56, bp+60, bp+64)
 27160  		pVar = tcl.XTcl_NewObj(tls)
 27161  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 27162  			func() uintptr {
 27163  				if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_INSERT {
 27164  					return ts + 10307
 27165  				}
 27166  				return func() uintptr {
 27167  					if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_UPDATE {
 27168  						return ts + 10314
 27169  					}
 27170  					return ts + 10321
 27171  				}()
 27172  			}(), -1))
 27173  
 27174  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), -1))
 27175  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 64)) != 0)))
 27176  
 27177  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 56))+1))
 27178  		libc.Xmemset(tls, zPK, 0, uint64(*(*int32)(unsafe.Pointer(bp + 56))+1))
 27179  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+72, bp+80)
 27180  
 27181  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27182  			*(*uint8)(unsafe.Pointer(zPK + uintptr(i))) = func() uint8 {
 27183  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(i))) != 0 {
 27184  					return uint8('X')
 27185  				}
 27186  				return uint8('.')
 27187  			}()
 27188  		}
 27189  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 27190  		tcl.XTcl_Free(tls, zPK)
 27191  
 27192  		pOld = tcl.XTcl_NewObj(tls)
 27193  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_INSERT {
 27194  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27195  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+88)
 27196  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 88)))
 27197  			}
 27198  		}
 27199  		pNew = tcl.XTcl_NewObj(tls)
 27200  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_DELETE {
 27201  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27202  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+96)
 27203  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 96)))
 27204  			}
 27205  		}
 27206  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 27207  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 27208  
 27209  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 27210  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 27211  		if rc != TCL_OK && rc != TCL_CONTINUE {
 27212  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27213  			if rc == TCL_BREAK {
 27214  				return TCL_OK
 27215  			}
 27216  			return rc
 27217  		}
 27218  	}
 27219  
 27220  	if isCheckNext != 0 {
 27221  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27222  		_ = rc2
 27223  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27224  
 27225  	} else {
 27226  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27227  	}
 27228  	if rc != SQLITE_OK {
 27229  		return test_session_error(tls, interp, rc, uintptr(0))
 27230  	}
 27231  
 27232  	return TCL_OK
 27233  }
 27234  
 27235  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27236  	bp := tls.Alloc(48)
 27237  	defer tls.Free(48)
 27238  
 27239  	var p uintptr = clientData
 27240  
 27241  	var rc int32
 27242  
 27243  	if objc < 2 {
 27244  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 27245  		return TCL_ERROR
 27246  	}
 27247  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27248  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 27249  	if rc != TCL_OK {
 27250  		return rc
 27251  	}
 27252  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 27253  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 27254  		return TCL_ERROR
 27255  	}
 27256  
 27257  	switch *(*int32)(unsafe.Pointer(bp)) {
 27258  	case 0:
 27259  		{
 27260  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 27261  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
 27262  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 27263  			break
 27264  
 27265  		}
 27266  
 27267  	case 1:
 27268  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 27269  		break
 27270  
 27271  	default:
 27272  		{
 27273  			libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27274  			libc.Xmemset(tls, bp+32, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 27275  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8+16)
 27276  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27277  
 27278  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 27279  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 27280  					*(*uintptr)(unsafe.Pointer(&struct {
 27281  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27282  					}{testStreamInput})), bp+8,
 27283  					*(*uintptr)(unsafe.Pointer(&struct {
 27284  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 27285  					}{testStreamOutput})), bp+32)
 27286  			} else {
 27287  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+32+8, bp+32)
 27288  			}
 27289  
 27290  			if rc == SQLITE_OK {
 27291  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 27292  			}
 27293  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 27294  			break
 27295  
 27296  		}
 27297  	}
 27298  
 27299  	if rc != SQLITE_OK {
 27300  		return test_session_error(tls, interp, rc, uintptr(0))
 27301  	}
 27302  	return TCL_OK
 27303  }
 27304  
 27305  type RebaseSubcmd = struct {
 27306  	FzSub        uintptr
 27307  	FnArg        int32
 27308  	F__ccgo_pad1 [4]byte
 27309  	FzMsg        uintptr
 27310  	FiSub        int32
 27311  	F__ccgo_pad2 [4]byte
 27312  }
 27313  
 27314  var aSub1 = [4]RebaseSubcmd{
 27315  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 27316  	{FzSub: ts + 10138, FzMsg: ts + 584},
 27317  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 27318  	{},
 27319  }
 27320  
 27321  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 27322  	var p uintptr = clientData
 27323  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 27324  }
 27325  
 27326  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27327  	bp := tls.Alloc(8)
 27328  	defer tls.Free(8)
 27329  
 27330  	var rc int32
 27331  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 27332  	if objc != 2 {
 27333  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 27334  		return SQLITE_ERROR
 27335  	}
 27336  
 27337  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 27338  	if rc != SQLITE_OK {
 27339  		return test_session_error(tls, interp, rc, uintptr(0))
 27340  	}
 27341  
 27342  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 27343  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27344  	}{test_rebaser_cmd})),
 27345  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 27346  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27347  	return TCL_OK
 27348  }
 27349  
 27350  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27351  	bp := tls.Alloc(8)
 27352  	defer tls.Free(8)
 27353  
 27354  	var rc int32
 27355  
 27356  	if objc != 3 {
 27357  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 27358  		return SQLITE_ERROR
 27359  	}
 27360  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27361  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 27362  	if rc != TCL_OK {
 27363  		return rc
 27364  	}
 27365  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 27366  		return TCL_ERROR
 27367  	}
 27368  
 27369  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 27370  	if rc != SQLITE_OK {
 27371  		return test_session_error(tls, interp, rc, uintptr(0))
 27372  	}
 27373  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 27374  	return TCL_OK
 27375  }
 27376  
 27377  type ConfigOpt = struct {
 27378  	FzSub        uintptr
 27379  	Fop          int32
 27380  	F__ccgo_pad1 [4]byte
 27381  }
 27382  
 27383  var aSub2 = [3]ConfigOpt{
 27384  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 27385  	{FzSub: ts + 2758},
 27386  	{},
 27387  }
 27388  
 27389  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 27390  	bp := tls.Alloc(160)
 27391  	defer tls.Free(160)
 27392  
 27393  	*(*[10]struct {
 27394  		FzCmd  uintptr
 27395  		FxProc uintptr
 27396  	})(unsafe.Pointer(bp)) = [10]struct {
 27397  		FzCmd  uintptr
 27398  		FxProc uintptr
 27399  	}{
 27400  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27401  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27402  		}{test_sqlite3session}))},
 27403  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27404  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27405  		}{test_sqlite3session_foreach}))},
 27406  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27407  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27408  		}{test_sqlite3changeset_invert}))},
 27409  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27410  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27411  		}{test_sqlite3changeset_concat}))},
 27412  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27413  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27414  		}{test_sqlite3changeset_apply}))},
 27415  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27416  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27417  		}{test_sqlite3changeset_apply_v2}))},
 27418  		{FzCmd: ts + 10770,
 27419  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27420  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27421  			}{test_sqlite3changeset_apply_replace_all}))},
 27422  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27423  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27424  		}{test_sql_exec_changeset}))},
 27425  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27426  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27427  		}{test_sqlite3rebaser_create}))},
 27428  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27429  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27430  		}{test_sqlite3session_config}))},
 27431  	}
 27432  	var i int32
 27433  
 27434  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([10]struct {
 27435  		FzCmd  uintptr
 27436  		FxProc uintptr
 27437  	}{}))/uint64(unsafe.Sizeof(struct {
 27438  		FzCmd  uintptr
 27439  		FxProc uintptr
 27440  	}{})); i++ {
 27441  		var p uintptr = bp + uintptr(i)*16
 27442  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 27443  			FzCmd  uintptr
 27444  			FxProc uintptr
 27445  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 27446  			FzCmd  uintptr
 27447  			FxProc uintptr
 27448  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 27449  	}
 27450  
 27451  	return TCL_OK
 27452  }
 27453  
 27454  type sig_atomic_t = int32
 27455  
 27456  type sigval = struct {
 27457  	F__ccgo_pad1 [0]uint64
 27458  	Fsival_int   int32
 27459  	F__ccgo_pad2 [4]byte
 27460  }
 27461  
 27462  type siginfo_t = struct {
 27463  	Fsi_signo  int32
 27464  	Fsi_errno  int32
 27465  	Fsi_code   int32
 27466  	F__pad0    int32
 27467  	F_sifields struct {
 27468  		F__ccgo_pad1 [0]uint64
 27469  		F_pad        [28]int32
 27470  	}
 27471  }
 27472  
 27473  type sigval_t = sigval
 27474  
 27475  type sigevent_t = sigevent
 27476  
 27477  type sig_t = uintptr
 27478  
 27479  type sigaction = struct {
 27480  	F__sigaction_handler struct{ Fsa_handler uintptr }
 27481  	Fsa_mask             struct{ F__val [16]uint64 }
 27482  	Fsa_flags            int32
 27483  	F__ccgo_pad1         [4]byte
 27484  	Fsa_restorer         uintptr
 27485  }
 27486  
 27487  type sigcontext = struct {
 27488  	Ffault_address uint64
 27489  	Fregs          [31]uint64
 27490  	Fsp            uint64
 27491  	Fpc            uint64
 27492  	Fpstate        uint64
 27493  	F__reserved    [4096]uint8
 27494  }
 27495  
 27496  type _aarch64_ctx = struct {
 27497  	Fmagic uint32
 27498  	Fsize  uint32
 27499  }
 27500  
 27501  type fpsimd_context = struct {
 27502  	Fhead struct {
 27503  		Fmagic uint32
 27504  		Fsize  uint32
 27505  	}
 27506  	Ffpsr  uint32
 27507  	Ffpcr  uint32
 27508  	Fvregs [32]struct {
 27509  		Flo uint64
 27510  		Fhi uint64
 27511  	}
 27512  }
 27513  
 27514  type esr_context = struct {
 27515  	Fhead struct {
 27516  		Fmagic uint32
 27517  		Fsize  uint32
 27518  	}
 27519  	Fesr uint64
 27520  }
 27521  
 27522  type extra_context = struct {
 27523  	Fhead struct {
 27524  		Fmagic uint32
 27525  		Fsize  uint32
 27526  	}
 27527  	Fdatap      uint64
 27528  	Fsize       uint32
 27529  	F__reserved [3]uint32
 27530  }
 27531  
 27532  type sve_context = struct {
 27533  	Fhead struct {
 27534  		Fmagic uint32
 27535  		Fsize  uint32
 27536  	}
 27537  	Fvl         uint16
 27538  	F__reserved [3]uint16
 27539  }
 27540  
 27541  type stack_t = struct {
 27542  	Fss_sp       uintptr
 27543  	Fss_flags    int32
 27544  	F__ccgo_pad1 [4]byte
 27545  	Fss_size     size_t
 27546  }
 27547  
 27548  type user_regs_struct = struct {
 27549  	Fregs   [31]uint64
 27550  	Fsp     uint64
 27551  	Fpc     uint64
 27552  	Fpstate uint64
 27553  }
 27554  
 27555  type user_fpsimd_struct = struct {
 27556  	Fvregs [32]struct {
 27557  		Flo uint64
 27558  		Fhi uint64
 27559  	}
 27560  	Ffpsr uint32
 27561  	Ffpcr uint32
 27562  }
 27563  
 27564  type elf_greg_t = uint64
 27565  
 27566  type elf_gregset_t = [34]elf_greg_t
 27567  
 27568  type elf_fpregset_t = user_fpsimd_struct
 27569  
 27570  type elf_siginfo = struct {
 27571  	Fsi_signo int32
 27572  	Fsi_code  int32
 27573  	Fsi_errno int32
 27574  }
 27575  
 27576  type elf_prstatus = struct {
 27577  	Fpr_info struct {
 27578  		Fsi_signo int32
 27579  		Fsi_code  int32
 27580  		Fsi_errno int32
 27581  	}
 27582  	Fpr_cursig   int16
 27583  	F__ccgo_pad1 [2]byte
 27584  	Fpr_sigpend  uint64
 27585  	Fpr_sighold  uint64
 27586  	Fpr_pid      int32
 27587  	Fpr_ppid     int32
 27588  	Fpr_pgrp     int32
 27589  	Fpr_sid      int32
 27590  	Fpr_utime    struct {
 27591  		Ftv_sec  int64
 27592  		Ftv_usec int64
 27593  	}
 27594  	Fpr_stime struct {
 27595  		Ftv_sec  int64
 27596  		Ftv_usec int64
 27597  	}
 27598  	Fpr_cutime struct {
 27599  		Ftv_sec  int64
 27600  		Ftv_usec int64
 27601  	}
 27602  	Fpr_cstime struct {
 27603  		Ftv_sec  int64
 27604  		Ftv_usec int64
 27605  	}
 27606  	Fpr_reg      elf_gregset_t
 27607  	Fpr_fpvalid  int32
 27608  	F__ccgo_pad2 [4]byte
 27609  }
 27610  
 27611  type elf_prpsinfo = struct {
 27612  	Fpr_state    uint8
 27613  	Fpr_sname    uint8
 27614  	Fpr_zomb     uint8
 27615  	Fpr_nice     uint8
 27616  	F__ccgo_pad1 [4]byte
 27617  	Fpr_flag     uint64
 27618  	Fpr_uid      uint32
 27619  	Fpr_gid      uint32
 27620  	Fpr_pid      int32
 27621  	Fpr_ppid     int32
 27622  	Fpr_pgrp     int32
 27623  	Fpr_sid      int32
 27624  	Fpr_fname    [16]uint8
 27625  	Fpr_psargs   [80]uint8
 27626  }
 27627  
 27628  type psaddr_t = uintptr
 27629  
 27630  type prgregset_t = [34]elf_greg_t
 27631  type prfpregset_t = user_fpsimd_struct
 27632  
 27633  type lwpid_t = int32
 27634  
 27635  type prstatus_t = elf_prstatus
 27636  type prpsinfo_t = elf_prpsinfo
 27637  
 27638  type greg_t = elf_greg_t
 27639  
 27640  type gregset_t = elf_gregset_t
 27641  
 27642  type fpregset_t = elf_fpregset_t
 27643  
 27644  type mcontext_t = struct {
 27645  	Ffault_address uint64
 27646  	Fregs          [31]uint64
 27647  	Fsp            uint64
 27648  	Fpc            uint64
 27649  	Fpstate        uint64
 27650  	F__reserved    [4096]uint8
 27651  }
 27652  
 27653  type ucontext_t1 = struct {
 27654  	Fuc_flags    uint64
 27655  	Fuc_link     uintptr
 27656  	Fuc_stack    stack_t
 27657  	Fuc_sigmask  sigset_t
 27658  	Fuc_mcontext mcontext_t
 27659  }
 27660  
 27661  type ucontext_t = ucontext_t1
 27662  
 27663  type sigstack = struct {
 27664  	Fss_sp       uintptr
 27665  	Fss_onstack  int32
 27666  	F__ccgo_pad1 [4]byte
 27667  }
 27668  
 27669  type SqliteDb = struct {
 27670  	Fdb             uintptr
 27671  	Finterp         uintptr
 27672  	FzBusy          uintptr
 27673  	FzCommit        uintptr
 27674  	FzTrace         uintptr
 27675  	FzTraceV2       uintptr
 27676  	FzProfile       uintptr
 27677  	FzProgress      uintptr
 27678  	FzBindFallback  uintptr
 27679  	FzAuth          uintptr
 27680  	FdisableAuth    int32
 27681  	F__ccgo_pad1    [4]byte
 27682  	FzNull          uintptr
 27683  	FpFunc          uintptr
 27684  	FpUpdateHook    uintptr
 27685  	FpPreUpdateHook uintptr
 27686  	FpRollbackHook  uintptr
 27687  	FpWalHook       uintptr
 27688  	FpUnlockNotify  uintptr
 27689  	FpCollate       uintptr
 27690  	Frc             int32
 27691  	F__ccgo_pad2    [4]byte
 27692  	FpCollateNeeded uintptr
 27693  	FstmtList       uintptr
 27694  	FstmtLast       uintptr
 27695  	FmaxStmt        int32
 27696  	FnStmt          int32
 27697  	FpIncrblob      uintptr
 27698  	FnStep          int32
 27699  	FnSort          int32
 27700  	FnIndex         int32
 27701  	FnVMStep        int32
 27702  	FnTransaction   int32
 27703  	FopenFlags      int32
 27704  	FnRef           int32
 27705  	FbLegacyPrepare int32
 27706  }
 27707  
 27708  type SqlFunc1 = struct {
 27709  	Finterp      uintptr
 27710  	FpScript     uintptr
 27711  	FpDb         uintptr
 27712  	FuseEvalObjv int32
 27713  	FeType       int32
 27714  	FzName       uintptr
 27715  	FpNext       uintptr
 27716  }
 27717  
 27718  type SqlFunc = SqlFunc1
 27719  
 27720  type SqlCollate1 = struct {
 27721  	Finterp  uintptr
 27722  	FzScript uintptr
 27723  	FpNext   uintptr
 27724  }
 27725  
 27726  type SqlCollate = SqlCollate1
 27727  
 27728  type SqlPreparedStmt1 = struct {
 27729  	FpNext       uintptr
 27730  	FpPrev       uintptr
 27731  	FpStmt       uintptr
 27732  	FnSql        int32
 27733  	F__ccgo_pad1 [4]byte
 27734  	FzSql        uintptr
 27735  	FnParm       int32
 27736  	F__ccgo_pad2 [4]byte
 27737  	FapParm      uintptr
 27738  }
 27739  
 27740  type SqlPreparedStmt = SqlPreparedStmt1
 27741  
 27742  type IncrblobChannel1 = struct {
 27743  	FpBlob       uintptr
 27744  	FpDb         uintptr
 27745  	FiSeek       int32
 27746  	F__ccgo_pad1 [4]byte
 27747  	Fchannel     Tcl_Channel
 27748  	FpNext       uintptr
 27749  	FpPrev       uintptr
 27750  }
 27751  
 27752  type IncrblobChannel = IncrblobChannel1
 27753  
 27754  func strlen30(tls *libc.TLS, z uintptr) int32 {
 27755  	var z2 uintptr = z
 27756  	for *(*uint8)(unsafe.Pointer(z2)) != 0 {
 27757  		z2++
 27758  	}
 27759  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 27760  }
 27761  
 27762  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 27763  	var p uintptr
 27764  	var pNext uintptr
 27765  
 27766  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 27767  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27768  
 27769  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27770  	}
 27771  }
 27772  
 27773  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 27774  	var p uintptr = instanceData
 27775  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27776  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 27777  
 27778  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27779  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 27780  	}
 27781  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 27782  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27783  	}
 27784  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 27785  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27786  	}
 27787  
 27788  	tcl.XTcl_Free(tls, p)
 27789  
 27790  	if rc != SQLITE_OK {
 27791  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 27792  		return TCL_ERROR
 27793  	}
 27794  	return TCL_OK
 27795  }
 27796  
 27797  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 27798  	var p uintptr = instanceData
 27799  	var nRead int32 = bufSize
 27800  	var nBlob int32
 27801  	var rc int32
 27802  
 27803  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27804  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 27805  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27806  	}
 27807  	if nRead <= 0 {
 27808  		return 0
 27809  	}
 27810  
 27811  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27812  	if rc != SQLITE_OK {
 27813  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 27814  		return -1
 27815  	}
 27816  
 27817  	*(*int32)(unsafe.Pointer(p + 16)) += nRead
 27818  	return nRead
 27819  }
 27820  
 27821  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 27822  	var p uintptr = instanceData
 27823  	var nWrite int32 = toWrite
 27824  	var nBlob int32
 27825  	var rc int32
 27826  
 27827  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27828  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 27829  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 27830  		return -1
 27831  	}
 27832  	if nWrite <= 0 {
 27833  		return 0
 27834  	}
 27835  
 27836  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27837  	if rc != SQLITE_OK {
 27838  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 27839  		return -1
 27840  	}
 27841  
 27842  	*(*int32)(unsafe.Pointer(p + 16)) += nWrite
 27843  	return nWrite
 27844  }
 27845  
 27846  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int64, seekMode int32, errorCodePtr uintptr) int32 {
 27847  	var p uintptr = instanceData
 27848  
 27849  	switch seekMode {
 27850  	case SEEK_SET:
 27851  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(offset)
 27852  		break
 27853  	case SEEK_CUR:
 27854  		*(*int32)(unsafe.Pointer(p + 16)) += int32(offset)
 27855  		break
 27856  	case SEEK_END:
 27857  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(int64(sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)) + offset)
 27858  		break
 27859  
 27860  	default:
 27861  	}
 27862  
 27863  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27864  }
 27865  
 27866  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 27867  }
 27868  
 27869  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 27870  	return TCL_ERROR
 27871  }
 27872  
 27873  var IncrblobChannelType = Tcl_ChannelType{
 27874  	FtypeName:      ts + 10868,
 27875  	Fversion:       uintptr(0x2),
 27876  	FcloseProc:     0,
 27877  	FinputProc:     0,
 27878  	FoutputProc:    0,
 27879  	FseekProc:      0,
 27880  	FwatchProc:     0,
 27881  	FgetHandleProc: 0,
 27882  }
 27883  
 27884  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 27885  	bp := tls.Alloc(80)
 27886  	defer tls.Free(80)
 27887  
 27888  	var p uintptr
 27889  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 27890  
 27891  	var rc int32
 27892  	var flags int32 = int32(1)<<1 | func() int32 {
 27893  		if isReadonly != 0 {
 27894  			return 0
 27895  		}
 27896  		return int32(1) << 2
 27897  	}()
 27898  
 27899  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 27900  	if rc != SQLITE_OK {
 27901  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 27902  		return TCL_ERROR
 27903  	}
 27904  
 27905  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 27906  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 27907  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 27908  
 27909  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]uint8{})), bp+16, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 27910  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+16, p, flags)
 27911  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27912  
 27913  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 27914  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 27915  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27916  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 27917  	}
 27918  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 27919  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 27920  
 27921  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 27922  	return TCL_OK
 27923  }
 27924  
 27925  var count int32 = 0
 27926  
 27927  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 27928  	bp := tls.Alloc(4)
 27929  	defer tls.Free(4)
 27930  
 27931  	var z uintptr
 27932  
 27933  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 27934  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 27935  		var c int32 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 27936  		if c == '$' || c == '[' || c == ';' {
 27937  			return 0
 27938  		}
 27939  	}
 27940  	return 1
 27941  }
 27942  
 27943  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 27944  	var p uintptr
 27945  	var pNew uintptr
 27946  	var nName int32 = strlen30(tls, zName)
 27947  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlFunc{}))+uint64(nName)+uint64(1)))
 27948  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*48
 27949  	libc.Xmemcpy(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint64(nName+1))
 27950  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 27951  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 27952  			tcl.XTcl_Free(tls, pNew)
 27953  			return p
 27954  		}
 27955  	}
 27956  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27957  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 27958  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 27959  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27960  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 27961  	return pNew
 27962  }
 27963  
 27964  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 27965  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 27966  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 27967  	}
 27968  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 27969  	tcl.XTcl_Free(tls, pStmt)
 27970  }
 27971  
 27972  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 27973  	var pPreStmt uintptr
 27974  	var pNext uintptr
 27975  
 27976  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 27977  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 27978  		dbFreeStmt(tls, pPreStmt)
 27979  	}
 27980  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 27981  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 27982  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 27983  }
 27984  
 27985  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27986  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 27987  }
 27988  
 27989  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27990  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 27991  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 27992  		flushStmtCache(tls, pDb)
 27993  		closeIncrblobChannels(tls, pDb)
 27994  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 27995  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 27996  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27997  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 27998  
 27999  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28000  				var _objPtr uintptr = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 28001  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28002  					tcl.XTclFreeObj(tls, _objPtr)
 28003  				}
 28004  			}
 28005  			tcl.XTcl_Free(tls, pFunc)
 28006  		}
 28007  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 28008  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 28009  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 28010  			tcl.XTcl_Free(tls, pCollate)
 28011  		}
 28012  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 28013  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 28014  		}
 28015  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 28016  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 28017  		}
 28018  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 28019  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 28020  		}
 28021  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 28022  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 28023  		}
 28024  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 28025  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 28026  		}
 28027  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 28028  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 28029  		}
 28030  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 28031  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 28032  		}
 28033  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 28034  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28035  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook
 28036  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28037  					tcl.XTclFreeObj(tls, _objPtr)
 28038  				}
 28039  			}
 28040  		}
 28041  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 28042  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28043  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook
 28044  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28045  					tcl.XTclFreeObj(tls, _objPtr)
 28046  				}
 28047  			}
 28048  		}
 28049  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 28050  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 28051  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook
 28052  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28053  					tcl.XTclFreeObj(tls, _objPtr)
 28054  				}
 28055  			}
 28056  		}
 28057  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 28058  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 28059  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook
 28060  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28061  					tcl.XTclFreeObj(tls, _objPtr)
 28062  				}
 28063  			}
 28064  		}
 28065  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 28066  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 28067  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 28068  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28069  					tcl.XTclFreeObj(tls, _objPtr)
 28070  				}
 28071  			}
 28072  		}
 28073  		tcl.XTcl_Free(tls, pDb)
 28074  	}
 28075  }
 28076  
 28077  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 28078  	var pDb uintptr = db
 28079  	delDatabaseRef(tls, pDb)
 28080  }
 28081  
 28082  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 28083  	bp := tls.Alloc(70)
 28084  	defer tls.Free(70)
 28085  
 28086  	var pDb uintptr = cd
 28087  	var rc int32
 28088  
 28089  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 28090  	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)))
 28091  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28092  		return 0
 28093  	}
 28094  	return 1
 28095  }
 28096  
 28097  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 28098  	var pDb uintptr = cd
 28099  	var rc int32
 28100  
 28101  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 28102  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28103  		return 1
 28104  	}
 28105  	return 0
 28106  }
 28107  
 28108  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 28109  	bp := tls.Alloc(216)
 28110  	defer tls.Free(216)
 28111  
 28112  	var pDb uintptr = cd
 28113  
 28114  	tcl.XTcl_DStringInit(tls, bp)
 28115  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 28116  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 28117  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 28118  	tcl.XTcl_DStringFree(tls, bp)
 28119  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28120  }
 28121  
 28122  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 28123  	var pDb uintptr = cd
 28124  	var pCmd uintptr
 28125  
 28126  	switch type1 {
 28127  	case uint32(SQLITE_TRACE_STMT):
 28128  		{
 28129  			var pStmt uintptr = pd
 28130  			var zSql uintptr = xd
 28131  
 28132  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28133  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28134  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28135  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28136  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28137  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 28138  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28139  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28140  				var _objPtr uintptr = pCmd
 28141  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28142  					tcl.XTclFreeObj(tls, _objPtr)
 28143  				}
 28144  			}
 28145  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28146  			break
 28147  
 28148  		}
 28149  	case uint32(SQLITE_TRACE_PROFILE):
 28150  		{
 28151  			var pStmt uintptr = pd
 28152  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 28153  
 28154  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28155  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28156  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28157  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28158  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28159  				tcl.XTcl_NewWideIntObj(tls, ns))
 28160  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28161  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28162  				var _objPtr uintptr = pCmd
 28163  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28164  					tcl.XTclFreeObj(tls, _objPtr)
 28165  				}
 28166  			}
 28167  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28168  			break
 28169  
 28170  		}
 28171  	case uint32(SQLITE_TRACE_ROW):
 28172  		{
 28173  			var pStmt uintptr = pd
 28174  
 28175  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28176  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28177  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28178  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28179  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28180  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28181  				var _objPtr uintptr = pCmd
 28182  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28183  					tcl.XTclFreeObj(tls, _objPtr)
 28184  				}
 28185  			}
 28186  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28187  			break
 28188  
 28189  		}
 28190  	case uint32(SQLITE_TRACE_CLOSE):
 28191  		{
 28192  			var db uintptr = pd
 28193  
 28194  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28195  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28196  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28197  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 28198  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28199  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 28200  				var _objPtr uintptr = pCmd
 28201  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28202  					tcl.XTclFreeObj(tls, _objPtr)
 28203  				}
 28204  			}
 28205  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28206  			break
 28207  
 28208  		}
 28209  	}
 28210  	return SQLITE_OK
 28211  }
 28212  
 28213  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 28214  	bp := tls.Alloc(328)
 28215  	defer tls.Free(328)
 28216  
 28217  	var pDb uintptr = cd
 28218  
 28219  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([100]uint8{}))-uint64(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 28220  	tcl.XTcl_DStringInit(tls, bp+112)
 28221  	tcl.XTcl_DStringAppend(tls, bp+112, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 28222  	tcl.XTcl_DStringAppendElement(tls, bp+112, zSql)
 28223  	tcl.XTcl_DStringAppendElement(tls, bp+112, bp+8)
 28224  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+112)).Fstring)
 28225  	tcl.XTcl_DStringFree(tls, bp+112)
 28226  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28227  }
 28228  
 28229  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 28230  	var pDb uintptr = cd
 28231  	var rc int32
 28232  
 28233  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 28234  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28235  		return 1
 28236  	}
 28237  	return 0
 28238  }
 28239  
 28240  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 28241  	var pDb uintptr = clientData
 28242  
 28243  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 28244  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28245  	}
 28246  }
 28247  
 28248  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 28249  	bp := tls.Alloc(4)
 28250  	defer tls.Free(4)
 28251  
 28252  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 28253  	var p uintptr
 28254  	var pDb uintptr = clientData
 28255  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28256  
 28257  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 28258  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 28259  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28260  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 28261  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 28262  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 28263  		tcl.XTcl_BackgroundError(tls, interp)
 28264  	}
 28265  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28266  		var _objPtr uintptr = p
 28267  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28268  			tcl.XTclFreeObj(tls, _objPtr)
 28269  		}
 28270  	}
 28271  
 28272  	return *(*int32)(unsafe.Pointer(bp))
 28273  }
 28274  
 28275  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 28276  	bp := tls.Alloc(80)
 28277  	defer tls.Free(80)
 28278  
 28279  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]uint8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 28280  	tcl.XTcl_SetVar2(tls, interp, ts+10889, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28281  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]uint8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 28282  	tcl.XTcl_SetVar2(tls, interp, ts+10914, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28283  }
 28284  
 28285  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 28286  	var i int32
 28287  	for i = 0; i < nArg; i++ {
 28288  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 28289  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 28290  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 28291  
 28292  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 28293  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28294  			var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 28295  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28296  				tcl.XTclFreeObj(tls, _objPtr)
 28297  			}
 28298  		}
 28299  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 28300  	}
 28301  }
 28302  
 28303  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 28304  	var pDb uintptr = p
 28305  	var pCmd uintptr
 28306  
 28307  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 28308  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28309  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 28310  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28311  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28312  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 28313  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 28314  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28315  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28316  		var _objPtr uintptr = pCmd
 28317  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28318  			tcl.XTclFreeObj(tls, _objPtr)
 28319  		}
 28320  	}
 28321  }
 28322  
 28323  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28324  
 28325  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 28326  	var pDb uintptr = p
 28327  	var pCmd uintptr
 28328  
 28329  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 28330  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28331  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 28332  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28333  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28334  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 28335  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28336  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28337  		var _objPtr uintptr = pCmd
 28338  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28339  			tcl.XTclFreeObj(tls, _objPtr)
 28340  		}
 28341  	}
 28342  }
 28343  
 28344  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28345  
 28346  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 28347  	var pDb uintptr = pCtx
 28348  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 28349  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 28350  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 28351  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 28352  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28353  		var _objPtr uintptr = pScript
 28354  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28355  			tcl.XTclFreeObj(tls, _objPtr)
 28356  		}
 28357  	}
 28358  }
 28359  
 28360  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 28361  	var p uintptr = pCtx
 28362  	var pCmd uintptr
 28363  
 28364  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 28365  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28366  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 28367  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 28368  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28369  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28370  		var _objPtr uintptr = pCmd
 28371  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28372  			tcl.XTclFreeObj(tls, _objPtr)
 28373  		}
 28374  	}
 28375  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 28376  }
 28377  
 28378  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 28379  	bp := tls.Alloc(40)
 28380  	defer tls.Free(40)
 28381  
 28382  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 28383  	var pCmd uintptr
 28384  	var i int32
 28385  	var rc int32
 28386  
 28387  	if argc == 0 {
 28388  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 28389  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28390  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 28391  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28392  			var _objPtr uintptr = pCmd
 28393  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28394  				tcl.XTclFreeObj(tls, _objPtr)
 28395  			}
 28396  		}
 28397  	} else {
 28398  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+8) != 0 {
 28399  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28400  			return
 28401  		}
 28402  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
 28403  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28404  		for i = 0; i < argc; i++ {
 28405  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 28406  			var pVal uintptr
 28407  
 28408  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 28409  			case SQLITE_BLOB:
 28410  				{
 28411  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28412  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 28413  					break
 28414  
 28415  				}
 28416  				fallthrough
 28417  			case SQLITE_INTEGER:
 28418  				{
 28419  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 28420  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 28421  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 28422  					} else {
 28423  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 28424  					}
 28425  					break
 28426  
 28427  				}
 28428  				fallthrough
 28429  			case SQLITE_FLOAT:
 28430  				{
 28431  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 28432  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 28433  					break
 28434  
 28435  				}
 28436  				fallthrough
 28437  			case SQLITE_NULL:
 28438  				{
 28439  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28440  					break
 28441  
 28442  				}
 28443  				fallthrough
 28444  			default:
 28445  				{
 28446  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28447  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 28448  					break
 28449  
 28450  				}
 28451  			}
 28452  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 28453  			if rc != 0 {
 28454  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28455  					var _objPtr uintptr = pCmd
 28456  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28457  						tcl.XTclFreeObj(tls, _objPtr)
 28458  					}
 28459  				}
 28460  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28461  				return
 28462  			}
 28463  		}
 28464  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 28465  			tcl.XTcl_GetString(tls, pCmd)
 28466  		}
 28467  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28468  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28469  			var _objPtr uintptr = pCmd
 28470  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28471  				tcl.XTclFreeObj(tls, _objPtr)
 28472  			}
 28473  		}
 28474  	}
 28475  
 28476  	if rc != 0 && rc != TCL_RETURN {
 28477  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28478  	} else {
 28479  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 28480  
 28481  		var data uintptr
 28482  		var zType uintptr = func() uintptr {
 28483  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28484  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28485  			}
 28486  			return ts + 584
 28487  		}()
 28488  		var c uint8 = *(*uint8)(unsafe.Pointer(zType))
 28489  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 28490  
 28491  		if eType == SQLITE_NULL {
 28492  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28493  				eType = SQLITE_BLOB
 28494  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 28495  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 28496  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28497  				eType = SQLITE_INTEGER
 28498  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28499  				eType = SQLITE_FLOAT
 28500  			} else {
 28501  				eType = SQLITE_TEXT
 28502  			}
 28503  		}
 28504  
 28505  		switch eType {
 28506  		case SQLITE_BLOB:
 28507  			{
 28508  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+16)
 28509  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 28510  				break
 28511  
 28512  			}
 28513  			fallthrough
 28514  		case SQLITE_INTEGER:
 28515  			{
 28516  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+24) {
 28517  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28518  					break
 28519  				}
 28520  
 28521  			}
 28522  			fallthrough
 28523  		case SQLITE_FLOAT:
 28524  			{
 28525  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+32) {
 28526  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 32)))
 28527  					break
 28528  				}
 28529  
 28530  			}
 28531  			fallthrough
 28532  		default:
 28533  			{
 28534  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+16)
 28535  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 28536  				break
 28537  
 28538  			}
 28539  		}
 28540  
 28541  	}
 28542  }
 28543  
 28544  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 28545  	bp := tls.Alloc(216)
 28546  	defer tls.Free(216)
 28547  
 28548  	var zCode uintptr
 28549  
 28550  	var rc int32
 28551  	var zReply uintptr
 28552  
 28553  	var pDb uintptr = pArg
 28554  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 28555  		return SQLITE_OK
 28556  	}
 28557  
 28558  	switch code {
 28559  	case SQLITE_COPY:
 28560  		zCode = ts + 10944
 28561  		break
 28562  	case SQLITE_CREATE_INDEX:
 28563  		zCode = ts + 10956
 28564  		break
 28565  	case SQLITE_CREATE_TABLE:
 28566  		zCode = ts + 10976
 28567  		break
 28568  	case SQLITE_CREATE_TEMP_INDEX:
 28569  		zCode = ts + 10996
 28570  		break
 28571  	case SQLITE_CREATE_TEMP_TABLE:
 28572  		zCode = ts + 11021
 28573  		break
 28574  	case SQLITE_CREATE_TEMP_TRIGGER:
 28575  		zCode = ts + 11046
 28576  		break
 28577  	case SQLITE_CREATE_TEMP_VIEW:
 28578  		zCode = ts + 11073
 28579  		break
 28580  	case SQLITE_CREATE_TRIGGER:
 28581  		zCode = ts + 11097
 28582  		break
 28583  	case SQLITE_CREATE_VIEW:
 28584  		zCode = ts + 11119
 28585  		break
 28586  	case SQLITE_DELETE:
 28587  		zCode = ts + 11138
 28588  		break
 28589  	case SQLITE_DROP_INDEX:
 28590  		zCode = ts + 11152
 28591  		break
 28592  	case SQLITE_DROP_TABLE:
 28593  		zCode = ts + 11170
 28594  		break
 28595  	case SQLITE_DROP_TEMP_INDEX:
 28596  		zCode = ts + 11188
 28597  		break
 28598  	case SQLITE_DROP_TEMP_TABLE:
 28599  		zCode = ts + 11211
 28600  		break
 28601  	case SQLITE_DROP_TEMP_TRIGGER:
 28602  		zCode = ts + 11234
 28603  		break
 28604  	case SQLITE_DROP_TEMP_VIEW:
 28605  		zCode = ts + 11259
 28606  		break
 28607  	case SQLITE_DROP_TRIGGER:
 28608  		zCode = ts + 11281
 28609  		break
 28610  	case SQLITE_DROP_VIEW:
 28611  		zCode = ts + 11301
 28612  		break
 28613  	case SQLITE_INSERT:
 28614  		zCode = ts + 11318
 28615  		break
 28616  	case SQLITE_PRAGMA:
 28617  		zCode = ts + 11332
 28618  		break
 28619  	case SQLITE_READ:
 28620  		zCode = ts + 11346
 28621  		break
 28622  	case SQLITE_SELECT:
 28623  		zCode = ts + 11358
 28624  		break
 28625  	case SQLITE_TRANSACTION:
 28626  		zCode = ts + 11372
 28627  		break
 28628  	case SQLITE_UPDATE:
 28629  		zCode = ts + 11391
 28630  		break
 28631  	case SQLITE_ATTACH:
 28632  		zCode = ts + 11405
 28633  		break
 28634  	case SQLITE_DETACH:
 28635  		zCode = ts + 11419
 28636  		break
 28637  	case SQLITE_ALTER_TABLE:
 28638  		zCode = ts + 11433
 28639  		break
 28640  	case SQLITE_REINDEX:
 28641  		zCode = ts + 11452
 28642  		break
 28643  	case SQLITE_ANALYZE:
 28644  		zCode = ts + 11467
 28645  		break
 28646  	case SQLITE_CREATE_VTABLE:
 28647  		zCode = ts + 11482
 28648  		break
 28649  	case SQLITE_DROP_VTABLE:
 28650  		zCode = ts + 11503
 28651  		break
 28652  	case SQLITE_FUNCTION:
 28653  		zCode = ts + 11522
 28654  		break
 28655  	case SQLITE_SAVEPOINT:
 28656  		zCode = ts + 11538
 28657  		break
 28658  	case SQLITE_RECURSIVE:
 28659  		zCode = ts + 11555
 28660  		break
 28661  	default:
 28662  		zCode = ts + 11572
 28663  		break
 28664  	}
 28665  	tcl.XTcl_DStringInit(tls, bp)
 28666  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 28667  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 28668  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28669  		if zArg1 != 0 {
 28670  			return zArg1
 28671  		}
 28672  		return ts + 584
 28673  	}())
 28674  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28675  		if zArg2 != 0 {
 28676  			return zArg2
 28677  		}
 28678  		return ts + 584
 28679  	}())
 28680  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28681  		if zArg3 != 0 {
 28682  			return zArg3
 28683  		}
 28684  		return ts + 584
 28685  	}())
 28686  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28687  		if zArg4 != 0 {
 28688  			return zArg4
 28689  		}
 28690  		return ts + 584
 28691  	}())
 28692  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 28693  	tcl.XTcl_DStringFree(tls, bp)
 28694  	if rc == TCL_OK {
 28695  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28696  	} else {
 28697  		zReply = ts + 11577
 28698  	}
 28699  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 28700  		rc = SQLITE_OK
 28701  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 28702  		rc = SQLITE_DENY
 28703  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 28704  		rc = SQLITE_IGNORE
 28705  	} else {
 28706  		rc = 999
 28707  	}
 28708  	return rc
 28709  }
 28710  
 28711  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 28712  	var zLine uintptr
 28713  	var nLine int32
 28714  	var n int32
 28715  
 28716  	nLine = 100
 28717  	zLine = libc.Xmalloc(tls, uint64(nLine))
 28718  	if zLine == uintptr(0) {
 28719  		return uintptr(0)
 28720  	}
 28721  	n = 0
 28722  	for 1 != 0 {
 28723  		if n+100 > nLine {
 28724  			nLine = nLine*2 + 100
 28725  			zLine = libc.Xrealloc(tls, zLine, uint64(nLine))
 28726  			if zLine == uintptr(0) {
 28727  				return uintptr(0)
 28728  			}
 28729  		}
 28730  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 28731  			if n == 0 {
 28732  				libc.Xfree(tls, zLine)
 28733  				return uintptr(0)
 28734  			}
 28735  			*(*uint8)(unsafe.Pointer(zLine + uintptr(n))) = uint8(0)
 28736  			break
 28737  		}
 28738  		for *(*uint8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 28739  			n++
 28740  		}
 28741  		if n > 0 && int32(*(*uint8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 28742  			n--
 28743  			*(*uint8)(unsafe.Pointer(zLine + uintptr(n))) = uint8(0)
 28744  			break
 28745  		}
 28746  	}
 28747  	zLine = libc.Xrealloc(tls, zLine, uint64(n+1))
 28748  	return zLine
 28749  }
 28750  
 28751  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 28752  	bp := tls.Alloc(16)
 28753  	defer tls.Free(16)
 28754  
 28755  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 28756  	var rc int32 = result
 28757  	var zEnd uintptr
 28758  
 28759  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 28760  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 28761  
 28762  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 28763  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 28764  		if rc != TCL_ERROR {
 28765  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 28766  			rc = TCL_ERROR
 28767  		}
 28768  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 28769  	}
 28770  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 28771  
 28772  	delDatabaseRef(tls, pDb)
 28773  	return rc
 28774  }
 28775  
 28776  var azEnd = [4]uintptr{
 28777  	ts + 11603,
 28778  	ts + 11628,
 28779  	ts + 11635,
 28780  	ts + 7824,
 28781  }
 28782  
 28783  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 28784  	var prepFlags uint32 = uint32(0)
 28785  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 28786  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 28787  	}
 28788  
 28789  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 28790  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 28791  	}
 28792  
 28793  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 28794  }
 28795  
 28796  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 28797  	bp := tls.Alloc(32)
 28798  	defer tls.Free(32)
 28799  
 28800  	var zSql uintptr = zIn
 28801  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 28802  	var pPreStmt uintptr
 28803  	var nSql int32
 28804  	var nVar int32 = 0
 28805  	var iParm int32 = 0
 28806  	var c uint8
 28807  	var i int32
 28808  	var needResultReset int32 = 0
 28809  	var rc int32 = SQLITE_OK
 28810  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28811  
 28812  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 28813  
 28814  	for int32(libc.AssignUint8(&c, *(*uint8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 28815  		zSql++
 28816  	}
 28817  	nSql = strlen30(tls, zSql)
 28818  
 28819  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 28820  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 28821  		if nSql >= n &&
 28822  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint64(n)) == 0 &&
 28823  			(int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 28824  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28825  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 28826  
 28827  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 28828  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28829  			} else {
 28830  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28831  			}
 28832  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 28833  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28834  			} else {
 28835  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28836  			}
 28837  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28838  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28839  			break
 28840  		}
 28841  	}
 28842  
 28843  	if pPreStmt == uintptr(0) {
 28844  		var nByte int32
 28845  
 28846  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 28847  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28848  			return TCL_ERROR
 28849  		}
 28850  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 28851  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 28852  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28853  				return TCL_ERROR
 28854  			} else {
 28855  				return TCL_OK
 28856  			}
 28857  		}
 28858  
 28859  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28860  		nByte = int32(uint64(unsafe.Sizeof(SqlPreparedStmt{})) + uint64(nVar)*uint64(unsafe.Sizeof(uintptr(0))))
 28861  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 28862  		libc.Xmemset(tls, pPreStmt, 0, uint64(nByte))
 28863  
 28864  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 28865  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = int32((int64(*(*uintptr)(unsafe.Pointer(pzOut))) - int64(zSql)) / 1)
 28866  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28867  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*56
 28868  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 28869  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 28870  			libc.Xmemcpy(tls, zCopy, zSql, uint64((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))
 28871  			*(*uint8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = uint8(0)
 28872  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 28873  		}
 28874  	}
 28875  
 28876  	for i = 1; i <= nVar; i++ {
 28877  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28878  		if zVar != uintptr(0) && (int32(*(*uint8)(unsafe.Pointer(zVar))) == '$' || int32(*(*uint8)(unsafe.Pointer(zVar))) == ':' || int32(*(*uint8)(unsafe.Pointer(zVar))) == '@') {
 28879  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 28880  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 28881  				var pCmd uintptr
 28882  				var rx int32
 28883  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 28884  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28885  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 28886  				if needResultReset != 0 {
 28887  					tcl.XTcl_ResetResult(tls, interp)
 28888  				}
 28889  				needResultReset = 1
 28890  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 28891  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28892  					var _objPtr uintptr = pCmd
 28893  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28894  						tcl.XTclFreeObj(tls, _objPtr)
 28895  					}
 28896  				}
 28897  				if rx == TCL_OK {
 28898  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 28899  				} else if rx == TCL_ERROR {
 28900  					rc = TCL_ERROR
 28901  					break
 28902  				} else {
 28903  					pVar = uintptr(0)
 28904  				}
 28905  			}
 28906  			if pVar != 0 {
 28907  				var data uintptr
 28908  				var zType uintptr = func() uintptr {
 28909  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28910  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28911  					}
 28912  					return ts + 584
 28913  				}()
 28914  				c = *(*uint8)(unsafe.Pointer(zType))
 28915  				if int32(*(*uint8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28916  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 28917  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28918  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28919  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28920  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 28921  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+8)
 28922  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 8)))
 28923  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28924  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+16)
 28925  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 16)))
 28926  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28927  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+24)
 28928  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28929  				} else {
 28930  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 28931  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28932  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28933  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28934  				}
 28935  			} else {
 28936  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28937  			}
 28938  			if needResultReset != 0 {
 28939  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28940  			}
 28941  		}
 28942  	}
 28943  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 28944  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 28945  	if needResultReset != 0 && rc == TCL_OK {
 28946  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28947  	}
 28948  
 28949  	return rc
 28950  }
 28951  
 28952  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 28953  	var i int32
 28954  
 28955  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 28956  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28957  			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8))
 28958  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28959  				tcl.XTclFreeObj(tls, _objPtr)
 28960  			}
 28961  		}
 28962  	}
 28963  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 28964  
 28965  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 28966  		dbFreeStmt(tls, pPreStmt)
 28967  	} else {
 28968  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 28969  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 28970  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 28971  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 28972  		}
 28973  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 28974  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 28975  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 28976  		} else {
 28977  		}
 28978  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 28979  
 28980  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 28981  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 28982  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 28983  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 28984  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28985  			dbFreeStmt(tls, pLast)
 28986  		}
 28987  	}
 28988  }
 28989  
 28990  type DbEvalContext1 = struct {
 28991  	FpDb       uintptr
 28992  	FpSql      uintptr
 28993  	FzSql      uintptr
 28994  	FpPreStmt  uintptr
 28995  	FnCol      int32
 28996  	FevalFlags int32
 28997  	FpArray    uintptr
 28998  	FapColName uintptr
 28999  }
 29000  
 29001  type DbEvalContext = DbEvalContext1
 29002  
 29003  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 29004  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 29005  		var i int32
 29006  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 29007  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29008  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8))
 29009  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29010  					tcl.XTclFreeObj(tls, _objPtr)
 29011  				}
 29012  			}
 29013  		}
 29014  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 29015  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 29016  	}
 29017  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 29018  }
 29019  
 29020  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 29021  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(DbEvalContext{})))
 29022  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 29023  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 29024  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 29025  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 29026  	if pArray != 0 {
 29027  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 29028  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 29029  	}
 29030  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 29031  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 29032  }
 29033  
 29034  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 29035  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 29036  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 29037  		var i int32
 29038  		var nCol int32
 29039  		var apColName uintptr = uintptr(0)
 29040  
 29041  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 29042  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 29043  			apColName = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol)))
 29044  			for i = 0; i < nCol; i++ {
 29045  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 29046  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))).FrefCount++
 29047  			}
 29048  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 29049  		}
 29050  
 29051  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 29052  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 29053  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 29054  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 29055  
 29056  			for i = 0; i < nCol; i++ {
 29057  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))
 29058  			}
 29059  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 29060  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 29061  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29062  				var _objPtr uintptr = pStar
 29063  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29064  					tcl.XTclFreeObj(tls, _objPtr)
 29065  				}
 29066  			}
 29067  		}
 29068  	}
 29069  
 29070  	if papColName != 0 {
 29071  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 29072  	}
 29073  	if pnCol != 0 {
 29074  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 29075  	}
 29076  }
 29077  
 29078  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 29079  	var zPrevSql uintptr = uintptr(0)
 29080  
 29081  	for *(*uint8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 29082  		var rc int32
 29083  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 29084  			zPrevSql = func() uintptr {
 29085  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 29086  					return uintptr(0)
 29087  				}
 29088  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 29089  			}()
 29090  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+16, p+24)
 29091  			if rc != TCL_OK {
 29092  				return rc
 29093  			}
 29094  		} else {
 29095  			var rcs int32
 29096  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 29097  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 29098  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 29099  
 29100  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 29101  			if rcs == SQLITE_ROW {
 29102  				return TCL_OK
 29103  			}
 29104  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 29105  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 29106  			}
 29107  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 29108  
 29109  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 29110  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 29111  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 29112  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 29113  			dbReleaseColumnNames(tls, p)
 29114  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 29115  
 29116  			if rcs != SQLITE_OK {
 29117  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 29118  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 29119  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 29120  					continue
 29121  				}
 29122  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 29123  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 29124  				return TCL_ERROR
 29125  			} else {
 29126  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 29127  			}
 29128  		}
 29129  	}
 29130  
 29131  	return TCL_BREAK
 29132  }
 29133  
 29134  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 29135  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 29136  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 29137  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 29138  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 29139  	}
 29140  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 29141  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29142  			var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 29143  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29144  				tcl.XTclFreeObj(tls, _objPtr)
 29145  			}
 29146  		}
 29147  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 29148  	}
 29149  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 29150  		var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpSql
 29151  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29152  			tcl.XTclFreeObj(tls, _objPtr)
 29153  		}
 29154  	}
 29155  	dbReleaseColumnNames(tls, p)
 29156  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 29157  }
 29158  
 29159  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 29160  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 29161  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 29162  	case SQLITE_BLOB:
 29163  		{
 29164  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 29165  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 29166  			if !(zBlob != 0) {
 29167  				bytes = 0
 29168  			}
 29169  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 29170  
 29171  		}
 29172  	case SQLITE_INTEGER:
 29173  		{
 29174  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 29175  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 29176  				return tcl.XTcl_NewIntObj(tls, int32(v))
 29177  			} else {
 29178  				return tcl.XTcl_NewWideIntObj(tls, v)
 29179  			}
 29180  
 29181  		}
 29182  		fallthrough
 29183  	case SQLITE_FLOAT:
 29184  		{
 29185  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 29186  
 29187  		}
 29188  	case SQLITE_NULL:
 29189  		{
 29190  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 29191  
 29192  		}
 29193  	}
 29194  
 29195  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 29196  }
 29197  
 29198  func DbUseNre(tls *libc.TLS) int32 {
 29199  	bp := tls.Alloc(8)
 29200  	defer tls.Free(8)
 29201  
 29202  	tcl.XTcl_GetVersion(tls, bp, bp+4, uintptr(0), uintptr(0))
 29203  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == 8 && *(*int32)(unsafe.Pointer(bp + 4)) >= 6 || *(*int32)(unsafe.Pointer(bp)) > 8)
 29204  }
 29205  
 29206  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 29207  	bp := tls.Alloc(16)
 29208  	defer tls.Free(16)
 29209  
 29210  	var rc int32 = result
 29211  
 29212  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 29213  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*8))
 29214  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 29215  
 29216  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 29217  		var i int32
 29218  
 29219  		dbEvalRowInfo(tls, p, bp, bp+8)
 29220  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 29221  			if pArray == uintptr(0) {
 29222  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 29223  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 29224  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 29225  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 29226  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8))), 0)
 29227  			} else {
 29228  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), dbEvalColumnValue(tls, p, i), 0)
 29229  			}
 29230  		}
 29231  
 29232  		if DbUseNre(tls) != 0 {
 29233  			tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 29234  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 29235  			}{DbEvalNextCmd})), p, pScript, uintptr(0), uintptr(0))
 29236  			return tcl.XTcl_NREvalObj(tls, interp, pScript, 0)
 29237  		} else {
 29238  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 29239  		}
 29240  	}
 29241  
 29242  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29243  		var _objPtr uintptr = pScript
 29244  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29245  			tcl.XTclFreeObj(tls, _objPtr)
 29246  		}
 29247  	}
 29248  	dbEvalFinalize(tls, p)
 29249  	tcl.XTcl_Free(tls, p)
 29250  
 29251  	if rc == TCL_OK || rc == TCL_BREAK {
 29252  		tcl.XTcl_ResetResult(tls, interp)
 29253  		rc = TCL_OK
 29254  	}
 29255  	return rc
 29256  }
 29257  
 29258  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 29259  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 29260  
 29261  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 29262  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 29263  		if pArg != 0 {
 29264  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29265  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(ppHook))
 29266  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29267  					tcl.XTclFreeObj(tls, _objPtr)
 29268  				}
 29269  			}
 29270  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 29271  		}
 29272  	}
 29273  	if pArg != 0 {
 29274  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 29275  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 29276  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 29277  		}
 29278  	}
 29279  
 29280  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 29281  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 29282  			return *(*uintptr)(unsafe.Pointer(&struct {
 29283  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 29284  			}{DbPreUpdateHandler}))
 29285  		}
 29286  		return uintptr(0)
 29287  	}(), pDb)
 29288  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 29289  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 29290  			return *(*uintptr)(unsafe.Pointer(&struct {
 29291  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 29292  			}{DbUpdateHandler}))
 29293  		}
 29294  		return uintptr(0)
 29295  	}(), pDb)
 29296  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 29297  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 29298  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 29299  		}
 29300  		return uintptr(0)
 29301  	}(), pDb)
 29302  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 29303  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 29304  			return *(*uintptr)(unsafe.Pointer(&struct {
 29305  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 29306  			}{DbWalHandler}))
 29307  		}
 29308  		return uintptr(0)
 29309  	}(), pDb)
 29310  }
 29311  
 29312  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29313  	bp := tls.Alloc(1588)
 29314  	defer tls.Free(1588)
 29315  	*(*uintptr)(unsafe.Pointer(bp + 1464)) = cd
 29316  
 29317  	var pDb uintptr
 29318  
 29319  	var rc int32
 29320  	var zAuth uintptr
 29321  
 29322  	var zDestFile uintptr
 29323  	var zSrcDb uintptr
 29324  
 29325  	var pBackup uintptr
 29326  	var zCallback uintptr
 29327  
 29328  	var zBusy uintptr
 29329  
 29330  	var subCmd uintptr
 29331  
 29332  	var pResult uintptr
 29333  	var pCollate uintptr
 29334  	var zName uintptr
 29335  	var zScript uintptr
 29336  
 29337  	var _objPtr uintptr
 29338  	var zCommit uintptr
 29339  
 29340  	var pResult1 uintptr
 29341  	var isComplete int32
 29342  
 29343  	var zOpt uintptr
 29344  
 29345  	var pResult2 uintptr
 29346  	var ii int32
 29347  	var zErr uintptr
 29348  	var nErr int32
 29349  	var z uintptr
 29350  	var zTable uintptr
 29351  	var zFile uintptr
 29352  	var zConflict uintptr
 29353  
 29354  	var nCol int32
 29355  	var nByte int32
 29356  	var i int32
 29357  	var j int32
 29358  	var nSep int32
 29359  	var nNull int32
 29360  	var zSql uintptr
 29361  	var zLine uintptr
 29362  	var azCol uintptr
 29363  	var zCommit1 uintptr
 29364  	var in uintptr
 29365  	var lineno int32
 29366  
 29367  	var pResult3 uintptr
 29368  
 29369  	var zSep uintptr
 29370  	var zNull uintptr
 29371  
 29372  	var z1 uintptr
 29373  	var flags int32
 29374  	var zSchema uintptr
 29375  	var pValue uintptr
 29376  	var pBA uintptr
 29377  	var pData uintptr
 29378  
 29379  	var xrc int32
 29380  
 29381  	var i1 int32
 29382  
 29383  	var pResult4 uintptr
 29384  
 29385  	var i2 int32
 29386  
 29387  	var _objPtr1 uintptr
 29388  
 29389  	var pRet uintptr
 29390  
 29391  	var p uintptr
 29392  	var pArray uintptr
 29393  	var pScript uintptr
 29394  	var evalFlags int32
 29395  	var zOpt1 uintptr
 29396  
 29397  	var z2 uintptr
 29398  	var n1 int32
 29399  	var _objPtr2 uintptr
 29400  	var flags1 int32
 29401  	var pFunc uintptr
 29402  	var pScript1 uintptr
 29403  	var zName1 uintptr
 29404  
 29405  	var i3 int32
 29406  
 29407  	var isReadonly1 int32
 29408  	var zDb uintptr
 29409  	var zTable1 uintptr
 29410  	var zColumn uintptr
 29411  
 29412  	var zNull1 uintptr
 29413  	var pResult5 uintptr
 29414  	var rowid Tcl_WideInt
 29415  	var zProgress uintptr
 29416  
 29417  	var zProfile uintptr
 29418  
 29419  	var zSrcFile uintptr
 29420  	var zDestDb uintptr
 29421  
 29422  	var pBackup1 uintptr
 29423  	var nTimeout int32
 29424  	var needFree int32
 29425  	var zSchema1 uintptr
 29426  
 29427  	var pData1 uintptr
 29428  	var v2 int32
 29429  	var zOp uintptr
 29430  
 29431  	var pResult6 uintptr
 29432  	var zTrace uintptr
 29433  
 29434  	var _objPtr3 uintptr
 29435  	var _objPtr4 uintptr
 29436  
 29437  	var pError uintptr
 29438  
 29439  	var i4 int32
 29440  	var zTraceV2 uintptr
 29441  
 29442  	var wMask Tcl_WideInt
 29443  
 29444  	var pScript2 uintptr
 29445  	var zBegin uintptr
 29446  	var _objPtr5 uintptr
 29447  	var xNotify uintptr
 29448  	var pNotifyArg uintptr
 29449  	var nCol2 int32
 29450  	var pRet1 uintptr
 29451  	var pObj1 uintptr
 29452  
 29453  	var ppHook uintptr
 29454  
 29455  	var zArg uintptr
 29456  	var i5 int32
 29457  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1464))
 29458  	rc = TCL_OK
 29459  
 29460  	if !(objc < 2) {
 29461  		goto __1
 29462  	}
 29463  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 29464  	return TCL_ERROR
 29465  __1:
 29466  	;
 29467  	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) {
 29468  		goto __2
 29469  	}
 29470  	return TCL_ERROR
 29471  __2:
 29472  	;
 29473  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 29474  	case uint32(0):
 29475  		goto __4
 29476  
 29477  	case uint32(1):
 29478  		goto __5
 29479  
 29480  	case uint32(2):
 29481  		goto __6
 29482  
 29483  	case uint32(3):
 29484  		goto __7
 29485  
 29486  	case uint32(4):
 29487  		goto __8
 29488  
 29489  	case uint32(5):
 29490  		goto __9
 29491  
 29492  	case uint32(6):
 29493  		goto __10
 29494  
 29495  	case uint32(7):
 29496  		goto __11
 29497  
 29498  	case uint32(8):
 29499  		goto __12
 29500  
 29501  	case uint32(9):
 29502  		goto __13
 29503  
 29504  	case uint32(10):
 29505  		goto __14
 29506  
 29507  	case uint32(11):
 29508  		goto __15
 29509  
 29510  	case uint32(12):
 29511  		goto __16
 29512  
 29513  	case uint32(13):
 29514  		goto __17
 29515  
 29516  	case uint32(14):
 29517  		goto __18
 29518  
 29519  	case uint32(15):
 29520  		goto __19
 29521  
 29522  	case uint32(16):
 29523  		goto __20
 29524  
 29525  	case uint32(18):
 29526  		goto __21
 29527  	case uint32(24):
 29528  		goto __22
 29529  
 29530  	case uint32(17):
 29531  		goto __23
 29532  
 29533  	case uint32(19):
 29534  		goto __24
 29535  
 29536  	case uint32(20):
 29537  		goto __25
 29538  
 29539  	case uint32(21):
 29540  		goto __26
 29541  
 29542  	case uint32(23):
 29543  		goto __27
 29544  
 29545  	case uint32(22):
 29546  		goto __28
 29547  
 29548  	case uint32(27):
 29549  		goto __29
 29550  
 29551  	case uint32(26):
 29552  		goto __30
 29553  
 29554  	case uint32(28):
 29555  		goto __31
 29556  
 29557  	case uint32(29):
 29558  		goto __32
 29559  
 29560  	case uint32(31):
 29561  		goto __33
 29562  
 29563  	case uint32(32):
 29564  		goto __34
 29565  
 29566  	case uint32(33):
 29567  		goto __35
 29568  
 29569  	case uint32(34):
 29570  		goto __36
 29571  
 29572  	case uint32(35):
 29573  		goto __37
 29574  
 29575  	case uint32(36):
 29576  		goto __38
 29577  
 29578  	case uint32(37):
 29579  		goto __39
 29580  
 29581  	case uint32(38):
 29582  		goto __40
 29583  
 29584  	case uint32(25):
 29585  		goto __41
 29586  
 29587  	case uint32(41):
 29588  		goto __42
 29589  	case uint32(39):
 29590  		goto __43
 29591  	case uint32(30):
 29592  		goto __44
 29593  
 29594  	case uint32(40):
 29595  		goto __45
 29596  	}
 29597  	goto __3
 29598  
 29599  __4:
 29600  	if !(objc > 3) {
 29601  		goto __46
 29602  	}
 29603  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29604  	return TCL_ERROR
 29605  	goto __47
 29606  __46:
 29607  	if !(objc == 2) {
 29608  		goto __48
 29609  	}
 29610  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29611  		goto __50
 29612  	}
 29613  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 29614  __50:
 29615  	;
 29616  	goto __49
 29617  __48:
 29618  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29619  		goto __51
 29620  	}
 29621  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 29622  __51:
 29623  	;
 29624  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1020)
 29625  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 29626  		goto __52
 29627  	}
 29628  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29629  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint64(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29630  	goto __53
 29631  __52:
 29632  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 29633  __53:
 29634  	;
 29635  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29636  		goto __54
 29637  	}
 29638  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29639  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29640  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 29641  	}{auth_callback})), pDb)
 29642  	goto __55
 29643  __54:
 29644  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29645  __55:
 29646  	;
 29647  __49:
 29648  	;
 29649  __47:
 29650  	;
 29651  	goto __3
 29652  
 29653  __5:
 29654  	if !(objc == 3) {
 29655  		goto __56
 29656  	}
 29657  	zSrcDb = ts + 85
 29658  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29659  	goto __57
 29660  __56:
 29661  	if !(objc == 4) {
 29662  		goto __58
 29663  	}
 29664  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29665  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 29666  	goto __59
 29667  __58:
 29668  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 29669  	return TCL_ERROR
 29670  __59:
 29671  	;
 29672  __57:
 29673  	;
 29674  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 29675  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 29676  	if !(rc != SQLITE_OK) {
 29677  		goto __60
 29678  	}
 29679  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 29680  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29681  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29682  	return TCL_ERROR
 29683  __60:
 29684  	;
 29685  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 29686  	if !(pBackup == uintptr(0)) {
 29687  		goto __61
 29688  	}
 29689  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 29690  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29691  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29692  	return TCL_ERROR
 29693  __61:
 29694  	;
 29695  __62:
 29696  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 29697  		goto __63
 29698  	}
 29699  	goto __62
 29700  __63:
 29701  	;
 29702  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 29703  	if !(rc == SQLITE_DONE) {
 29704  		goto __64
 29705  	}
 29706  	rc = TCL_OK
 29707  	goto __65
 29708  __64:
 29709  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 29710  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29711  	rc = TCL_ERROR
 29712  __65:
 29713  	;
 29714  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29715  	goto __3
 29716  
 29717  __6:
 29718  	if !(objc > 3) {
 29719  		goto __66
 29720  	}
 29721  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29722  	return TCL_ERROR
 29723  	goto __67
 29724  __66:
 29725  	if !(objc == 2) {
 29726  		goto __68
 29727  	}
 29728  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 29729  		goto __70
 29730  	}
 29731  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 29732  __70:
 29733  	;
 29734  	goto __69
 29735  __68:
 29736  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 29737  		goto __71
 29738  	}
 29739  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 29740  __71:
 29741  	;
 29742  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1032)
 29743  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 29744  		goto __72
 29745  	}
 29746  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 29747  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint64(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 29748  	goto __73
 29749  __72:
 29750  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 29751  __73:
 29752  	;
 29753  __69:
 29754  	;
 29755  __67:
 29756  	;
 29757  	goto __3
 29758  
 29759  __7:
 29760  	if !(objc > 3) {
 29761  		goto __74
 29762  	}
 29763  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 29764  	return TCL_ERROR
 29765  	goto __75
 29766  __74:
 29767  	if !(objc == 2) {
 29768  		goto __76
 29769  	}
 29770  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29771  		goto __78
 29772  	}
 29773  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 29774  __78:
 29775  	;
 29776  	goto __77
 29777  __76:
 29778  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29779  		goto __79
 29780  	}
 29781  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 29782  __79:
 29783  	;
 29784  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1036)
 29785  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1036)) > 0) {
 29786  		goto __80
 29787  	}
 29788  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29789  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint64(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29790  	goto __81
 29791  __80:
 29792  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 29793  __81:
 29794  	;
 29795  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29796  		goto __82
 29797  	}
 29798  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29799  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29800  		f func(*libc.TLS, uintptr, int32) int32
 29801  	}{DbBusyHandler})), pDb)
 29802  	goto __83
 29803  __82:
 29804  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29805  __83:
 29806  	;
 29807  __77:
 29808  	;
 29809  __75:
 29810  	;
 29811  	goto __3
 29812  
 29813  __8:
 29814  	if !(objc <= 2) {
 29815  		goto __84
 29816  	}
 29817  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 29818  	return TCL_ERROR
 29819  __84:
 29820  	;
 29821  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29822  	if !(int32(*(*uint8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 29823  		goto __85
 29824  	}
 29825  	if !(objc != 3) {
 29826  		goto __87
 29827  	}
 29828  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 29829  	return TCL_ERROR
 29830  	goto __88
 29831  __87:
 29832  	flushStmtCache(tls, pDb)
 29833  __88:
 29834  	;
 29835  	goto __86
 29836  __85:
 29837  	if !(int32(*(*uint8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 29838  		goto __89
 29839  	}
 29840  	if !(objc != 4) {
 29841  		goto __91
 29842  	}
 29843  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 29844  	return TCL_ERROR
 29845  	goto __92
 29846  __91:
 29847  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1040)) {
 29848  		goto __93
 29849  	}
 29850  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 29851  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0)), ts+11838, uintptr(0)))
 29852  	return TCL_ERROR
 29853  	goto __94
 29854  __93:
 29855  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) < 0) {
 29856  		goto __95
 29857  	}
 29858  	flushStmtCache(tls, pDb)
 29859  	*(*int32)(unsafe.Pointer(bp + 1040)) = 0
 29860  	goto __96
 29861  __95:
 29862  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) > MAX_PREPARED_STMTS) {
 29863  		goto __97
 29864  	}
 29865  	*(*int32)(unsafe.Pointer(bp + 1040)) = MAX_PREPARED_STMTS
 29866  __97:
 29867  	;
 29868  __96:
 29869  	;
 29870  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1040))
 29871  __94:
 29872  	;
 29873  __92:
 29874  	;
 29875  	goto __90
 29876  __89:
 29877  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 29878  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)), ts+11864,
 29879  		uintptr(0)))
 29880  	return TCL_ERROR
 29881  __90:
 29882  	;
 29883  __86:
 29884  	;
 29885  	goto __3
 29886  
 29887  __9:
 29888  	if !(objc != 2) {
 29889  		goto __98
 29890  	}
 29891  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 29892  	return TCL_ERROR
 29893  __98:
 29894  	;
 29895  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 29896  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 29897  	goto __3
 29898  
 29899  __10:
 29900  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 29901  	goto __3
 29902  
 29903  __11:
 29904  	if !(objc != 4) {
 29905  		goto __99
 29906  	}
 29907  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 29908  	return TCL_ERROR
 29909  __99:
 29910  	;
 29911  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29912  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1044)
 29913  	pCollate = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlCollate{}))+uint64(*(*int32)(unsafe.Pointer(bp + 1044)))+uint64(1)))
 29914  	if !(pCollate == uintptr(0)) {
 29915  		goto __100
 29916  	}
 29917  	return TCL_ERROR
 29918  __100:
 29919  	;
 29920  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 29921  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 29922  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*24
 29923  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 29924  	libc.Xmemcpy(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 29925  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 29926  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 29927  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 29928  		}{tclSqlCollate}))) != 0) {
 29929  		goto __101
 29930  	}
 29931  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 29932  	return TCL_ERROR
 29933  __101:
 29934  	;
 29935  	goto __3
 29936  
 29937  __12:
 29938  	if !(objc != 3) {
 29939  		goto __102
 29940  	}
 29941  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 29942  	return TCL_ERROR
 29943  __102:
 29944  	;
 29945  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 29946  		goto __103
 29947  	}
 29948  __104:
 29949  	_objPtr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 29950  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1) {
 29951  		goto __107
 29952  	}
 29953  	tcl.XTclFreeObj(tls, _objPtr)
 29954  __107:
 29955  	;
 29956  	goto __105
 29957  __105:
 29958  	if 0 != 0 {
 29959  		goto __104
 29960  	}
 29961  	goto __106
 29962  __106:
 29963  	;
 29964  __103:
 29965  	;
 29966  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29967  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 29968  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 29969  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 29970  	}{tclCollateNeeded})))
 29971  	goto __3
 29972  
 29973  __13:
 29974  	if !(objc > 3) {
 29975  		goto __108
 29976  	}
 29977  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29978  	return TCL_ERROR
 29979  	goto __109
 29980  __108:
 29981  	if !(objc == 2) {
 29982  		goto __110
 29983  	}
 29984  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29985  		goto __112
 29986  	}
 29987  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 29988  __112:
 29989  	;
 29990  	goto __111
 29991  __110:
 29992  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29993  		goto __113
 29994  	}
 29995  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 29996  __113:
 29997  	;
 29998  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1048)
 29999  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1048)) > 0) {
 30000  		goto __114
 30001  	}
 30002  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 30003  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint64(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 30004  	goto __115
 30005  __114:
 30006  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 30007  __115:
 30008  	;
 30009  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 30010  		goto __116
 30011  	}
 30012  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30013  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30014  		f func(*libc.TLS, uintptr) int32
 30015  	}{DbCommitHandler})), pDb)
 30016  	goto __117
 30017  __116:
 30018  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30019  __117:
 30020  	;
 30021  __111:
 30022  	;
 30023  __109:
 30024  	;
 30025  	goto __3
 30026  
 30027  __14:
 30028  	if !(objc != 3) {
 30029  		goto __118
 30030  	}
 30031  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 30032  	return TCL_ERROR
 30033  __118:
 30034  	;
 30035  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)))
 30036  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 30037  	tcl.XTcl_SetIntObj(tls, pResult1, libc.Bool32(isComplete != 0))
 30038  	goto __3
 30039  
 30040  __15:
 30041  	if !(objc > 4) {
 30042  		goto __119
 30043  	}
 30044  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 30045  	return TCL_ERROR
 30046  __119:
 30047  	;
 30048  	if !(objc == 2) {
 30049  		goto __120
 30050  	}
 30051  
 30052  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 30053  	ii = 0
 30054  __122:
 30055  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 30056  		goto __124
 30057  	}
 30058  	*(*int32)(unsafe.Pointer(bp + 1052)) = 0
 30059  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1052))
 30060  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 30061  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 30062  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 30063  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1052))))
 30064  	goto __123
 30065  __123:
 30066  	ii++
 30067  	goto __122
 30068  	goto __124
 30069  __124:
 30070  	;
 30071  	goto __121
 30072  __120:
 30073  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30074  	*(*int32)(unsafe.Pointer(bp + 1056)) = -1
 30075  	*(*int32)(unsafe.Pointer(bp + 1060)) = 0
 30076  	if !(int32(*(*uint8)(unsafe.Pointer(zOpt))) == '-') {
 30077  		goto __125
 30078  	}
 30079  	zOpt++
 30080  __125:
 30081  	;
 30082  	ii = 0
 30083  __126:
 30084  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 30085  		goto __128
 30086  	}
 30087  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 30088  		goto __129
 30089  	}
 30090  	goto __128
 30091  __129:
 30092  	;
 30093  	goto __127
 30094  __127:
 30095  	ii++
 30096  	goto __126
 30097  	goto __128
 30098  __128:
 30099  	;
 30100  	if !(uint64(ii) >= uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 30101  		goto __130
 30102  	}
 30103  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 30104  		ts+11945, uintptr(0)))
 30105  	return TCL_ERROR
 30106  __130:
 30107  	;
 30108  	if !(objc == 4) {
 30109  		goto __131
 30110  	}
 30111  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1056) != 0) {
 30112  		goto __132
 30113  	}
 30114  	return TCL_ERROR
 30115  __132:
 30116  	;
 30117  __131:
 30118  	;
 30119  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1056)), bp+1060))
 30120  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1060)))
 30121  __121:
 30122  	;
 30123  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 30124  	goto __3
 30125  
 30126  __16:
 30127  	lineno = 0
 30128  	if !(objc < 5 || objc > 7) {
 30129  		goto __133
 30130  	}
 30131  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 30132  		ts+11947)
 30133  	return TCL_ERROR
 30134  __133:
 30135  	;
 30136  	if !(objc >= 6) {
 30137  		goto __134
 30138  	}
 30139  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0))
 30140  	goto __135
 30141  __134:
 30142  	zSep = ts + 12009
 30143  __135:
 30144  	;
 30145  	if !(objc >= 7) {
 30146  		goto __136
 30147  	}
 30148  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)), uintptr(0))
 30149  	goto __137
 30150  __136:
 30151  	zNull = ts + 584
 30152  __137:
 30153  	;
 30154  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 30155  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0))
 30156  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0))
 30157  	nSep = strlen30(tls, zSep)
 30158  	nNull = strlen30(tls, zNull)
 30159  	if !(nSep == 0) {
 30160  		goto __138
 30161  	}
 30162  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 30163  		uintptr(0)))
 30164  	return TCL_ERROR
 30165  __138:
 30166  	;
 30167  	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) {
 30168  		goto __139
 30169  	}
 30170  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 30171  		ts+12099, uintptr(0)))
 30172  	return TCL_ERROR
 30173  __139:
 30174  	;
 30175  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 30176  	if !(zSql == uintptr(0)) {
 30177  		goto __140
 30178  	}
 30179  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 30180  	return TCL_ERROR
 30181  __140:
 30182  	;
 30183  	nByte = strlen30(tls, zSql)
 30184  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 30185  	sqlite3.Xsqlite3_free(tls, zSql)
 30186  	if !(rc != 0) {
 30187  		goto __141
 30188  	}
 30189  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30190  	nCol = 0
 30191  	goto __142
 30192  __141:
 30193  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30194  __142:
 30195  	;
 30196  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30197  	if !(nCol == 0) {
 30198  		goto __143
 30199  	}
 30200  	return TCL_ERROR
 30201  __143:
 30202  	;
 30203  	zSql = libc.Xmalloc(tls, uint64(nByte+50+nCol*2))
 30204  	if !(zSql == uintptr(0)) {
 30205  		goto __144
 30206  	}
 30207  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 30208  	return TCL_ERROR
 30209  __144:
 30210  	;
 30211  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 30212  		libc.VaList(bp+384, zConflict, zTable))
 30213  	j = strlen30(tls, zSql)
 30214  	i = 1
 30215  __145:
 30216  	if !(i < nCol) {
 30217  		goto __147
 30218  	}
 30219  	*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(',')
 30220  	*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('?')
 30221  	goto __146
 30222  __146:
 30223  	i++
 30224  	goto __145
 30225  	goto __147
 30226  __147:
 30227  	;
 30228  	*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(')')
 30229  	*(*uint8)(unsafe.Pointer(zSql + uintptr(j))) = uint8(0)
 30230  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 30231  	libc.Xfree(tls, zSql)
 30232  	if !(rc != 0) {
 30233  		goto __148
 30234  	}
 30235  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30236  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30237  	return TCL_ERROR
 30238  __148:
 30239  	;
 30240  	in = libc.Xfopen(tls, zFile, ts+4402)
 30241  	if !(in == uintptr(0)) {
 30242  		goto __149
 30243  	}
 30244  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 30245  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30246  	return TCL_ERROR
 30247  __149:
 30248  	;
 30249  	azCol = libc.Xmalloc(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol+1))
 30250  	if !(azCol == uintptr(0)) {
 30251  		goto __150
 30252  	}
 30253  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 30254  	libc.Xfclose(tls, in)
 30255  	return TCL_ERROR
 30256  __150:
 30257  	;
 30258  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 30259  	zCommit1 = ts + 11628
 30260  __151:
 30261  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 30262  		goto __152
 30263  	}
 30264  	lineno++
 30265  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 30266  	i = 0
 30267  	z = zLine
 30268  __153:
 30269  	if !(*(*uint8)(unsafe.Pointer(z)) != 0) {
 30270  		goto __155
 30271  	}
 30272  	if !(int32(*(*uint8)(unsafe.Pointer(z))) == int32(*(*uint8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint64(nSep)) == 0) {
 30273  		goto __156
 30274  	}
 30275  	*(*uint8)(unsafe.Pointer(z)) = uint8(0)
 30276  	i++
 30277  	if !(i < nCol) {
 30278  		goto __157
 30279  	}
 30280  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)) = z + uintptr(nSep)
 30281  	z += uintptr(nSep - 1)
 30282  __157:
 30283  	;
 30284  __156:
 30285  	;
 30286  	goto __154
 30287  __154:
 30288  	z++
 30289  	goto __153
 30290  	goto __155
 30291  __155:
 30292  	;
 30293  	if !(i+1 != nCol) {
 30294  		goto __158
 30295  	}
 30296  	nErr = strlen30(tls, zFile) + 200
 30297  	zErr = libc.Xmalloc(tls, uint64(nErr))
 30298  	if !(zErr != 0) {
 30299  		goto __159
 30300  	}
 30301  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 30302  		ts+12315,
 30303  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 30304  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 30305  	libc.Xfree(tls, zErr)
 30306  __159:
 30307  	;
 30308  	zCommit1 = ts + 7824
 30309  	goto __152
 30310  __158:
 30311  	;
 30312  	i = 0
 30313  __160:
 30314  	if !(i < nCol) {
 30315  		goto __162
 30316  	}
 30317  
 30318  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), zNull) == 0 ||
 30319  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8))) == 0) {
 30320  		goto __163
 30321  	}
 30322  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1)
 30323  	goto __164
 30324  __163:
 30325  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), -1, uintptr(0))
 30326  __164:
 30327  	;
 30328  	goto __161
 30329  __161:
 30330  	i++
 30331  	goto __160
 30332  	goto __162
 30333  __162:
 30334  	;
 30335  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30336  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30337  	libc.Xfree(tls, zLine)
 30338  	if !(rc != SQLITE_OK) {
 30339  		goto __165
 30340  	}
 30341  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30342  	zCommit1 = ts + 7824
 30343  	goto __152
 30344  __165:
 30345  	;
 30346  	goto __151
 30347  __152:
 30348  	;
 30349  	libc.Xfree(tls, azCol)
 30350  	libc.Xfclose(tls, in)
 30351  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30352  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 30353  
 30354  	if !(int32(*(*uint8)(unsafe.Pointer(zCommit1))) == 'C') {
 30355  		goto __166
 30356  	}
 30357  
 30358  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 30359  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 30360  	rc = TCL_OK
 30361  	goto __167
 30362  __166:
 30363  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]uint8{})), bp+1072, ts+1333, libc.VaList(bp+536, lineno))
 30364  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1072,
 30365  		uintptr(0)))
 30366  	rc = TCL_ERROR
 30367  __167:
 30368  	;
 30369  	goto __3
 30370  
 30371  __17:
 30372  	zSchema = uintptr(0)
 30373  	pValue = uintptr(0)
 30374  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = int64(0)
 30375  	*(*int32)(unsafe.Pointer(bp + 1160)) = 0
 30376  
 30377  	if !(objc < 3) {
 30378  		goto __168
 30379  	}
 30380  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 30381  	rc = TCL_ERROR
 30382  	goto __3
 30383  __168:
 30384  	;
 30385  	i1 = 2
 30386  __169:
 30387  	if !(i1 < objc-1) {
 30388  		goto __171
 30389  	}
 30390  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*8)))
 30391  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 30392  		goto __172
 30393  	}
 30394  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1152)
 30395  	if !(rc != 0) {
 30396  		goto __173
 30397  	}
 30398  	goto deserialize_error
 30399  __173:
 30400  	;
 30401  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1152))
 30402  	goto __170
 30403  __172:
 30404  	;
 30405  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 30406  		goto __174
 30407  	}
 30408  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1160)
 30409  	if !(rc != 0) {
 30410  		goto __175
 30411  	}
 30412  	goto deserialize_error
 30413  __175:
 30414  	;
 30415  	goto __170
 30416  __174:
 30417  	;
 30418  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*uint8)(unsafe.Pointer(z1))) != '-') {
 30419  		goto __176
 30420  	}
 30421  	zSchema = z1
 30422  	goto __170
 30423  __176:
 30424  	;
 30425  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 30426  	rc = TCL_ERROR
 30427  	goto deserialize_error
 30428  	goto __170
 30429  __170:
 30430  	i1++
 30431  	goto __169
 30432  	goto __171
 30433  __171:
 30434  	;
 30435  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30436  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1164)
 30437  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 30438  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 30439  		goto __177
 30440  	}
 30441  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 30442  	rc = TCL_ERROR
 30443  	goto __178
 30444  __177:
 30445  	if !(*(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 30446  		goto __179
 30447  	}
 30448  	libc.Xmemcpy(tls, pData, pBA, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 30449  __179:
 30450  	;
 30451  	if !(*(*int32)(unsafe.Pointer(bp + 1160)) != 0) {
 30452  		goto __180
 30453  	}
 30454  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 30455  	goto __181
 30456  __180:
 30457  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 30458  __181:
 30459  	;
 30460  	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))
 30461  	if !(xrc != 0) {
 30462  		goto __182
 30463  	}
 30464  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 30465  	rc = TCL_ERROR
 30466  __182:
 30467  	;
 30468  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) > int64(0)) {
 30469  		goto __183
 30470  	}
 30471  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1168)
 30472  __183:
 30473  	;
 30474  __178:
 30475  	;
 30476  deserialize_error:
 30477  	goto __3
 30478  
 30479  __18:
 30480  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 30481  		uintptr(0)))
 30482  	return TCL_ERROR
 30483  
 30484  __19:
 30485  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30486  	goto __3
 30487  
 30488  __20:
 30489  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30490  	goto __3
 30491  
 30492  __21:
 30493  __22:
 30494  	pResult4 = uintptr(0)
 30495  	if !(objc != 3) {
 30496  		goto __184
 30497  	}
 30498  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 30499  	return TCL_ERROR
 30500  __184:
 30501  	;
 30502  	dbEvalInit(tls, bp+1176, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 30503  	rc = dbEvalStep(tls, bp+1176)
 30504  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 30505  		goto __185
 30506  	}
 30507  	if !(rc == TCL_OK) {
 30508  		goto __187
 30509  	}
 30510  	pResult4 = dbEvalColumnValue(tls, bp+1176, 0)
 30511  	goto __188
 30512  __187:
 30513  	if !(rc == TCL_BREAK) {
 30514  		goto __189
 30515  	}
 30516  	tcl.XTcl_ResetResult(tls, interp)
 30517  __189:
 30518  	;
 30519  __188:
 30520  	;
 30521  	goto __186
 30522  __185:
 30523  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 30524  		goto __190
 30525  	}
 30526  	pResult4 = tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(rc == TCL_OK) != 0))
 30527  __190:
 30528  	;
 30529  __186:
 30530  	;
 30531  	dbEvalFinalize(tls, bp+1176)
 30532  	if !(pResult4 != 0) {
 30533  		goto __191
 30534  	}
 30535  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 30536  __191:
 30537  	;
 30538  	if !(rc == TCL_BREAK) {
 30539  		goto __192
 30540  	}
 30541  	rc = TCL_OK
 30542  __192:
 30543  	;
 30544  	goto __3
 30545  
 30546  __23:
 30547  	evalFlags = 0
 30548  __193:
 30549  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))) != uintptr(0) && int32(*(*uint8)(unsafe.Pointer(zOpt1))) == '-') {
 30550  		goto __194
 30551  	}
 30552  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 30553  		goto __195
 30554  	}
 30555  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 30556  	goto __196
 30557  __195:
 30558  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 30559  	return TCL_ERROR
 30560  __196:
 30561  	;
 30562  	objc--
 30563  	objv += 8
 30564  	goto __193
 30565  __194:
 30566  	;
 30567  	if !(objc < 3 || objc > 5) {
 30568  		goto __197
 30569  	}
 30570  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 30571  		ts+12569)
 30572  	return TCL_ERROR
 30573  __197:
 30574  	;
 30575  	if !(objc == 3) {
 30576  		goto __198
 30577  	}
 30578  	pRet = tcl.XTcl_NewObj(tls)
 30579  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 30580  	dbEvalInit(tls, bp+1232, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 30581  __200:
 30582  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1232))) {
 30583  		goto __201
 30584  	}
 30585  	dbEvalRowInfo(tls, bp+1232, bp+1288, uintptr(0))
 30586  	i2 = 0
 30587  __202:
 30588  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1288))) {
 30589  		goto __204
 30590  	}
 30591  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1232, i2))
 30592  	goto __203
 30593  __203:
 30594  	i2++
 30595  	goto __202
 30596  	goto __204
 30597  __204:
 30598  	;
 30599  	goto __200
 30600  __201:
 30601  	;
 30602  	dbEvalFinalize(tls, bp+1232)
 30603  	if !(rc == TCL_BREAK) {
 30604  		goto __205
 30605  	}
 30606  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 30607  	rc = TCL_OK
 30608  __205:
 30609  	;
 30610  __206:
 30611  	_objPtr1 = pRet
 30612  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr1)).FrefCount, 1) <= 1) {
 30613  		goto __209
 30614  	}
 30615  	tcl.XTclFreeObj(tls, _objPtr1)
 30616  __209:
 30617  	;
 30618  	goto __207
 30619  __207:
 30620  	if 0 != 0 {
 30621  		goto __206
 30622  	}
 30623  	goto __208
 30624  __208:
 30625  	;
 30626  	goto __199
 30627  __198:
 30628  	pArray = uintptr(0)
 30629  
 30630  	if !(objc >= 5 && *(*uint8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))) != 0) {
 30631  		goto __210
 30632  	}
 30633  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 30634  __210:
 30635  	;
 30636  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30637  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 30638  
 30639  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 30640  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), pArray, evalFlags)
 30641  
 30642  	*(*ClientData)(unsafe.Pointer(bp + 1296)) = p
 30643  	*(*ClientData)(unsafe.Pointer(bp + 1296 + 1*8)) = pScript
 30644  	rc = DbEvalNextCmd(tls, bp+1296, interp, TCL_OK)
 30645  __199:
 30646  	;
 30647  	goto __3
 30648  
 30649  __24:
 30650  	flags1 = SQLITE_UTF8
 30651  	*(*int32)(unsafe.Pointer(bp + 1312)) = -1
 30652  	*(*int32)(unsafe.Pointer(bp + 1368)) = SQLITE_NULL
 30653  	if !(objc < 4) {
 30654  		goto __211
 30655  	}
 30656  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 30657  	return TCL_ERROR
 30658  __211:
 30659  	;
 30660  	i3 = 3
 30661  __212:
 30662  	if !(i3 < objc-1) {
 30663  		goto __214
 30664  	}
 30665  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)))
 30666  	n1 = strlen30(tls, z2)
 30667  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint64(n1)) == 0) {
 30668  		goto __215
 30669  	}
 30670  	if !(i3 == objc-2) {
 30671  		goto __217
 30672  	}
 30673  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 30674  	return TCL_ERROR
 30675  __217:
 30676  	;
 30677  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*8)), bp+1312) != 0) {
 30678  		goto __218
 30679  	}
 30680  	return TCL_ERROR
 30681  __218:
 30682  	;
 30683  	if !(*(*int32)(unsafe.Pointer(bp + 1312)) < 0) {
 30684  		goto __219
 30685  	}
 30686  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 30687  		uintptr(0)))
 30688  	return TCL_ERROR
 30689  __219:
 30690  	;
 30691  	i3++
 30692  	goto __216
 30693  __215:
 30694  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint64(n1)) == 0) {
 30695  		goto __220
 30696  	}
 30697  	flags1 = flags1 | SQLITE_DETERMINISTIC
 30698  	goto __221
 30699  __220:
 30700  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint64(n1)) == 0) {
 30701  		goto __222
 30702  	}
 30703  	flags1 = flags1 | SQLITE_DIRECTONLY
 30704  	goto __223
 30705  __222:
 30706  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint64(n1)) == 0) {
 30707  		goto __224
 30708  	}
 30709  	flags1 = flags1 | SQLITE_INNOCUOUS
 30710  	goto __225
 30711  __224:
 30712  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint64(n1)) == 0) {
 30713  		goto __226
 30714  	}
 30715  	*(*[6]uintptr)(unsafe.Pointer(bp + 1320)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 30716  
 30717  	if !(i3 == objc-2) {
 30718  		goto __228
 30719  	}
 30720  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 30721  	return TCL_ERROR
 30722  __228:
 30723  	;
 30724  	i3++
 30725  	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) {
 30726  		goto __229
 30727  	}
 30728  	return TCL_ERROR
 30729  __229:
 30730  	;
 30731  	*(*int32)(unsafe.Pointer(bp + 1368))++
 30732  	goto __227
 30733  __226:
 30734  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 30735  		ts+12783, uintptr(0)))
 30736  	return TCL_ERROR
 30737  __227:
 30738  	;
 30739  __225:
 30740  	;
 30741  __223:
 30742  	;
 30743  __221:
 30744  	;
 30745  __216:
 30746  	;
 30747  	goto __213
 30748  __213:
 30749  	i3++
 30750  	goto __212
 30751  	goto __214
 30752  __214:
 30753  	;
 30754  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30755  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 30756  	pFunc = findSqlFunc(tls, pDb, zName1)
 30757  	if !(pFunc == uintptr(0)) {
 30758  		goto __230
 30759  	}
 30760  	return TCL_ERROR
 30761  __230:
 30762  	;
 30763  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 30764  		goto __231
 30765  	}
 30766  __232:
 30767  	_objPtr2 = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 30768  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr2)).FrefCount, 1) <= 1) {
 30769  		goto __235
 30770  	}
 30771  	tcl.XTclFreeObj(tls, _objPtr2)
 30772  __235:
 30773  	;
 30774  	goto __233
 30775  __233:
 30776  	if 0 != 0 {
 30777  		goto __232
 30778  	}
 30779  	goto __234
 30780  __234:
 30781  	;
 30782  __231:
 30783  	;
 30784  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 30785  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 30786  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 30787  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1368))
 30788  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1312)), flags1,
 30789  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 30790  			f func(*libc.TLS, uintptr, int32, uintptr)
 30791  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 30792  	if !(rc != SQLITE_OK) {
 30793  		goto __236
 30794  	}
 30795  	rc = TCL_ERROR
 30796  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30797  __236:
 30798  	;
 30799  	goto __3
 30800  
 30801  __25:
 30802  	isReadonly1 = 0
 30803  	zDb = ts + 85
 30804  
 30805  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), ts+12434) == 0) {
 30806  		goto __237
 30807  	}
 30808  	isReadonly1 = 1
 30809  __237:
 30810  	;
 30811  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 30812  		goto __238
 30813  	}
 30814  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 30815  	return TCL_ERROR
 30816  __238:
 30817  	;
 30818  	if !(objc == 6+isReadonly1) {
 30819  		goto __239
 30820  	}
 30821  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*8)))
 30822  __239:
 30823  	;
 30824  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)))
 30825  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 30826  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+1376)
 30827  
 30828  	if !(rc == TCL_OK) {
 30829  		goto __240
 30830  	}
 30831  	rc = createIncrblobChannel(tls,
 30832  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1376)), isReadonly1)
 30833  __240:
 30834  	;
 30835  	goto __3
 30836  
 30837  __26:
 30838  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30839  	goto __3
 30840  
 30841  __27:
 30842  	if !(objc != 2 && objc != 3) {
 30843  		goto __241
 30844  	}
 30845  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 30846  	return TCL_ERROR
 30847  __241:
 30848  	;
 30849  	if !(objc == 3) {
 30850  		goto __242
 30851  	}
 30852  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1384)
 30853  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 30854  		goto __243
 30855  	}
 30856  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 30857  __243:
 30858  	;
 30859  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1384)) > 0) {
 30860  		goto __244
 30861  	}
 30862  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1384))+1))
 30863  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint64(*(*int32)(unsafe.Pointer(bp + 1384))))
 30864  	*(*uint8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1384))))) = uint8(0)
 30865  	goto __245
 30866  __244:
 30867  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 30868  __245:
 30869  	;
 30870  __242:
 30871  	;
 30872  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 30873  	goto __3
 30874  
 30875  __28:
 30876  	if !(objc != 2) {
 30877  		goto __246
 30878  	}
 30879  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30880  	return TCL_ERROR
 30881  __246:
 30882  	;
 30883  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30884  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 30885  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 30886  	goto __3
 30887  
 30888  __29:
 30889  	if !(objc == 2) {
 30890  		goto __247
 30891  	}
 30892  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30893  		goto __249
 30894  	}
 30895  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 30896  __249:
 30897  	;
 30898  	goto __248
 30899  __247:
 30900  	if !(objc == 4) {
 30901  		goto __250
 30902  	}
 30903  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1388)) {
 30904  		goto __252
 30905  	}
 30906  	return TCL_ERROR
 30907  __252:
 30908  	;
 30909  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30910  		goto __253
 30911  	}
 30912  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 30913  __253:
 30914  	;
 30915  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1392)
 30916  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1392)) > 0) {
 30917  		goto __254
 30918  	}
 30919  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30920  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint64(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30921  	goto __255
 30922  __254:
 30923  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 30924  __255:
 30925  	;
 30926  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30927  		goto __256
 30928  	}
 30929  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30930  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1388)), *(*uintptr)(unsafe.Pointer(&struct {
 30931  		f func(*libc.TLS, uintptr) int32
 30932  	}{DbProgressHandler})), pDb)
 30933  	goto __257
 30934  __256:
 30935  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 30936  __257:
 30937  	;
 30938  	goto __251
 30939  __250:
 30940  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 30941  	return TCL_ERROR
 30942  __251:
 30943  	;
 30944  __248:
 30945  	;
 30946  	goto __3
 30947  
 30948  __30:
 30949  	if !(objc > 3) {
 30950  		goto __258
 30951  	}
 30952  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30953  	return TCL_ERROR
 30954  	goto __259
 30955  __258:
 30956  	if !(objc == 2) {
 30957  		goto __260
 30958  	}
 30959  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30960  		goto __262
 30961  	}
 30962  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 30963  __262:
 30964  	;
 30965  	goto __261
 30966  __260:
 30967  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30968  		goto __263
 30969  	}
 30970  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 30971  __263:
 30972  	;
 30973  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1396)
 30974  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1396)) > 0) {
 30975  		goto __264
 30976  	}
 30977  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30978  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint64(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30979  	goto __265
 30980  __264:
 30981  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 30982  __265:
 30983  	;
 30984  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30985  		goto __266
 30986  	}
 30987  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30988  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30989  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 30990  	}{DbProfileHandler})), pDb)
 30991  	goto __267
 30992  __266:
 30993  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30994  __267:
 30995  	;
 30996  __261:
 30997  	;
 30998  __259:
 30999  	;
 31000  	goto __3
 31001  
 31002  __31:
 31003  	if !(objc != 3) {
 31004  		goto __268
 31005  	}
 31006  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 31007  	return TCL_ERROR
 31008  __268:
 31009  	;
 31010  	goto __3
 31011  
 31012  __32:
 31013  	nTimeout = 0
 31014  
 31015  	if !(objc == 3) {
 31016  		goto __269
 31017  	}
 31018  	zDestDb = ts + 85
 31019  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31020  	goto __270
 31021  __269:
 31022  	if !(objc == 4) {
 31023  		goto __271
 31024  	}
 31025  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31026  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 31027  	goto __272
 31028  __271:
 31029  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 31030  	return TCL_ERROR
 31031  __272:
 31032  	;
 31033  __270:
 31034  	;
 31035  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1400,
 31036  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 31037  	if !(rc != SQLITE_OK) {
 31038  		goto __273
 31039  	}
 31040  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 31041  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1400))), uintptr(0)))
 31042  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 31043  	return TCL_ERROR
 31044  __273:
 31045  	;
 31046  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1400)), ts+85)
 31047  	if !(pBackup1 == uintptr(0)) {
 31048  		goto __274
 31049  	}
 31050  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 31051  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31052  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 31053  	return TCL_ERROR
 31054  __274:
 31055  	;
 31056  __275:
 31057  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 31058  		rc == SQLITE_BUSY) {
 31059  		goto __276
 31060  	}
 31061  	if !(rc == SQLITE_BUSY) {
 31062  		goto __277
 31063  	}
 31064  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 31065  		goto __278
 31066  	}
 31067  	goto __276
 31068  __278:
 31069  	;
 31070  	sqlite3.Xsqlite3_sleep(tls, 100)
 31071  __277:
 31072  	;
 31073  	goto __275
 31074  __276:
 31075  	;
 31076  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 31077  	if !(rc == SQLITE_DONE) {
 31078  		goto __279
 31079  	}
 31080  	rc = TCL_OK
 31081  	goto __280
 31082  __279:
 31083  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 31084  		goto __281
 31085  	}
 31086  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 31087  		uintptr(0)))
 31088  	rc = TCL_ERROR
 31089  	goto __282
 31090  __281:
 31091  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 31092  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31093  	rc = TCL_ERROR
 31094  __282:
 31095  	;
 31096  __280:
 31097  	;
 31098  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 31099  	goto __3
 31100  
 31101  __33:
 31102  	if objc >= 3 {
 31103  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31104  	} else {
 31105  		zSchema1 = ts + 85
 31106  	}
 31107  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)) = int64(0)
 31108  	if !(objc != 2 && objc != 3) {
 31109  		goto __283
 31110  	}
 31111  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 31112  	rc = TCL_ERROR
 31113  	goto __284
 31114  __283:
 31115  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(SQLITE_SERIALIZE_NOCOPY))
 31116  	if !(pData1 != 0) {
 31117  		goto __285
 31118  	}
 31119  	needFree = 0
 31120  	goto __286
 31121  __285:
 31122  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(0))
 31123  	needFree = 1
 31124  __286:
 31125  	;
 31126  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)))))
 31127  	if !(needFree != 0) {
 31128  		goto __287
 31129  	}
 31130  	sqlite3.Xsqlite3_free(tls, pData1)
 31131  __287:
 31132  	;
 31133  __284:
 31134  	;
 31135  	goto __3
 31136  
 31137  __34:
 31138  	if !(objc != 3) {
 31139  		goto __288
 31140  	}
 31141  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 31142  	return TCL_ERROR
 31143  __288:
 31144  	;
 31145  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 31146  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 31147  		goto __289
 31148  	}
 31149  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 31150  	goto __290
 31151  __289:
 31152  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 31153  		goto __291
 31154  	}
 31155  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 31156  	goto __292
 31157  __291:
 31158  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 31159  		goto __293
 31160  	}
 31161  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 31162  	goto __294
 31163  __293:
 31164  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 31165  		goto __295
 31166  	}
 31167  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 31168  	goto __296
 31169  __295:
 31170  	tcl.XTcl_AppendResult(tls, interp,
 31171  		libc.VaList(bp+888, ts+13061,
 31172  			uintptr(0)))
 31173  	return TCL_ERROR
 31174  __296:
 31175  	;
 31176  __294:
 31177  	;
 31178  __292:
 31179  	;
 31180  __290:
 31181  	;
 31182  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 31183  	goto __3
 31184  
 31185  __35:
 31186  	if !(objc != 3) {
 31187  		goto __297
 31188  	}
 31189  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 31190  	return TCL_ERROR
 31191  __297:
 31192  	;
 31193  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1416) != 0) {
 31194  		goto __298
 31195  	}
 31196  	return TCL_ERROR
 31197  __298:
 31198  	;
 31199  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1416)))
 31200  	goto __3
 31201  
 31202  __36:
 31203  	if !(objc != 2) {
 31204  		goto __299
 31205  	}
 31206  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 31207  	return TCL_ERROR
 31208  __299:
 31209  	;
 31210  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 31211  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31212  	goto __3
 31213  
 31214  __37:
 31215  	if !(objc > 3) {
 31216  		goto __300
 31217  	}
 31218  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 31219  	return TCL_ERROR
 31220  	goto __301
 31221  __300:
 31222  	if !(objc == 2) {
 31223  		goto __302
 31224  	}
 31225  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31226  		goto __304
 31227  	}
 31228  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 31229  __304:
 31230  	;
 31231  	goto __303
 31232  __302:
 31233  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31234  		goto __305
 31235  	}
 31236  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 31237  __305:
 31238  	;
 31239  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1420)
 31240  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1420)) > 0) {
 31241  		goto __306
 31242  	}
 31243  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 31244  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint64(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 31245  	goto __307
 31246  __306:
 31247  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 31248  __307:
 31249  	;
 31250  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31251  		goto __308
 31252  	}
 31253  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31254  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 31255  		f func(*libc.TLS, uintptr, uintptr)
 31256  	}{DbTraceHandler})), pDb)
 31257  	goto __309
 31258  __308:
 31259  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 31260  __309:
 31261  	;
 31262  __303:
 31263  	;
 31264  __301:
 31265  	;
 31266  	goto __3
 31267  
 31268  __38:
 31269  	if !(objc > 4) {
 31270  		goto __310
 31271  	}
 31272  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 31273  	return TCL_ERROR
 31274  	goto __311
 31275  __310:
 31276  	if !(objc == 2) {
 31277  		goto __312
 31278  	}
 31279  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31280  		goto __314
 31281  	}
 31282  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 31283  __314:
 31284  	;
 31285  	goto __313
 31286  __312:
 31287  	wMask = int64(0)
 31288  	if !(objc == 4) {
 31289  		goto __315
 31290  	}
 31291  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1424)) {
 31292  		goto __317
 31293  	}
 31294  	return TCL_ERROR
 31295  __317:
 31296  	;
 31297  	i4 = 0
 31298  __318:
 31299  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1424))) {
 31300  		goto __320
 31301  	}
 31302  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), i4, bp+1432)) {
 31303  		goto __321
 31304  	}
 31305  	return TCL_ERROR
 31306  __321:
 31307  	;
 31308  	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) {
 31309  		goto __322
 31310  	}
 31311  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 31312  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 31313  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), bp+1448)) {
 31314  		goto __324
 31315  	}
 31316  __326:
 31317  	_objPtr3 = pError
 31318  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr3)).FrefCount, 1) <= 1) {
 31319  		goto __329
 31320  	}
 31321  	tcl.XTclFreeObj(tls, _objPtr3)
 31322  __329:
 31323  	;
 31324  	goto __327
 31325  __327:
 31326  	if 0 != 0 {
 31327  		goto __326
 31328  	}
 31329  	goto __328
 31330  __328:
 31331  	;
 31332  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1448))
 31333  	goto __325
 31334  __324:
 31335  	tcl.XTcl_SetObjResult(tls, interp, pError)
 31336  __330:
 31337  	_objPtr4 = pError
 31338  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr4)).FrefCount, 1) <= 1) {
 31339  		goto __333
 31340  	}
 31341  	tcl.XTclFreeObj(tls, _objPtr4)
 31342  __333:
 31343  	;
 31344  	goto __331
 31345  __331:
 31346  	if 0 != 0 {
 31347  		goto __330
 31348  	}
 31349  	goto __332
 31350  __332:
 31351  	;
 31352  	return TCL_ERROR
 31353  __325:
 31354  	;
 31355  	goto __323
 31356  __322:
 31357  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1440))) {
 31358  	case uint32(0):
 31359  		goto __335
 31360  	case uint32(1):
 31361  		goto __336
 31362  	case uint32(2):
 31363  		goto __337
 31364  	case uint32(3):
 31365  		goto __338
 31366  	}
 31367  	goto __334
 31368  __335:
 31369  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 31370  	goto __334
 31371  __336:
 31372  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 31373  	goto __334
 31374  __337:
 31375  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 31376  	goto __334
 31377  __338:
 31378  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 31379  	goto __334
 31380  __334:
 31381  	;
 31382  __323:
 31383  	;
 31384  	goto __319
 31385  __319:
 31386  	i4++
 31387  	goto __318
 31388  	goto __320
 31389  __320:
 31390  	;
 31391  	goto __316
 31392  __315:
 31393  	wMask = int64(SQLITE_TRACE_STMT)
 31394  __316:
 31395  	;
 31396  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31397  		goto __339
 31398  	}
 31399  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 31400  __339:
 31401  	;
 31402  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1424)
 31403  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1424)) > 0) {
 31404  		goto __340
 31405  	}
 31406  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 31407  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint64(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 31408  	goto __341
 31409  __340:
 31410  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 31411  __341:
 31412  	;
 31413  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31414  		goto __342
 31415  	}
 31416  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31417  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 31418  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 31419  	}{DbTraceV2Handler})), pDb)
 31420  	goto __343
 31421  __342:
 31422  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 31423  __343:
 31424  	;
 31425  __313:
 31426  	;
 31427  __311:
 31428  	;
 31429  	goto __3
 31430  
 31431  __39:
 31432  	zBegin = ts + 13159
 31433  	if !(objc != 3 && objc != 4) {
 31434  		goto __344
 31435  	}
 31436  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 31437  	return TCL_ERROR
 31438  __344:
 31439  	;
 31440  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 31441  		goto __345
 31442  	}
 31443  	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) {
 31444  		goto __346
 31445  	}
 31446  	return TCL_ERROR
 31447  __346:
 31448  	;
 31449  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1456))) {
 31450  	case uint32(0):
 31451  		goto __348
 31452  	case uint32(1):
 31453  		goto __349
 31454  	case uint32(2):
 31455  		goto __350
 31456  	}
 31457  	goto __347
 31458  __348:
 31459  	;
 31460  	goto __347
 31461  __349:
 31462  	zBegin = ts + 13217
 31463  	goto __347
 31464  __350:
 31465  	zBegin = ts + 13233
 31466  	goto __347
 31467  __347:
 31468  	;
 31469  __345:
 31470  	;
 31471  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 31472  
 31473  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 31474  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 31475  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 31476  	if !(rc != SQLITE_OK) {
 31477  		goto __351
 31478  	}
 31479  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31480  	return TCL_ERROR
 31481  __351:
 31482  	;
 31483  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 31484  
 31485  	addDatabaseRef(tls, pDb)
 31486  	if !(DbUseNre(tls) != 0) {
 31487  		goto __352
 31488  	}
 31489  	tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31490  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 31491  	}{DbTransPostCmd})), *(*uintptr)(unsafe.Pointer(bp + 1464)), uintptr(0), uintptr(0), uintptr(0))
 31492  	tcl.XTcl_NREvalObj(tls, interp, pScript2, 0)
 31493  	goto __353
 31494  __352:
 31495  	rc = DbTransPostCmd(tls, bp+1464, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 31496  __353:
 31497  	;
 31498  	goto __3
 31499  
 31500  __40:
 31501  	if !(objc != 2 && objc != 3) {
 31502  		goto __354
 31503  	}
 31504  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31505  	rc = TCL_ERROR
 31506  	goto __355
 31507  __354:
 31508  	xNotify = uintptr(0)
 31509  	pNotifyArg = uintptr(0)
 31510  
 31511  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 31512  		goto __356
 31513  	}
 31514  __357:
 31515  	_objPtr5 = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 31516  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr5)).FrefCount, 1) <= 1) {
 31517  		goto __360
 31518  	}
 31519  	tcl.XTclFreeObj(tls, _objPtr5)
 31520  __360:
 31521  	;
 31522  	goto __358
 31523  __358:
 31524  	if 0 != 0 {
 31525  		goto __357
 31526  	}
 31527  	goto __359
 31528  __359:
 31529  	;
 31530  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 31531  __356:
 31532  	;
 31533  	if !(objc == 3) {
 31534  		goto __361
 31535  	}
 31536  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 31537  		f func(*libc.TLS, uintptr, int32)
 31538  	}{DbUnlockNotify}))
 31539  	pNotifyArg = pDb
 31540  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 31541  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 31542  __361:
 31543  	;
 31544  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 31545  		goto __362
 31546  	}
 31547  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31548  	rc = TCL_ERROR
 31549  __362:
 31550  	;
 31551  __355:
 31552  	;
 31553  	goto __3
 31554  
 31555  __41:
 31556  	if !(objc < 3) {
 31557  		goto __363
 31558  	}
 31559  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 31560  __363:
 31561  	;
 31562  	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) {
 31563  		goto __364
 31564  	}
 31565  	return TCL_ERROR
 31566  __364:
 31567  	;
 31568  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1472))) {
 31569  	case uint32(0):
 31570  		goto __366
 31571  
 31572  	case uint32(2):
 31573  		goto __367
 31574  
 31575  	case uint32(1):
 31576  		goto __368
 31577  
 31578  	case uint32(3):
 31579  		goto __369
 31580  	case uint32(4):
 31581  		goto __370
 31582  	}
 31583  	goto __365
 31584  __366:
 31585  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 31586  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 31587  	goto __365
 31588  
 31589  __367:
 31590  	if !(objc > 4) {
 31591  		goto __371
 31592  	}
 31593  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 31594  	return TCL_ERROR
 31595  __371:
 31596  	;
 31597  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31598  		if objc == 4 {
 31599  			return *(*uintptr)(unsafe.Pointer(objv + 3*8))
 31600  		}
 31601  		return uintptr(0)
 31602  	}(), pDb+112)
 31603  	goto __365
 31604  
 31605  __368:
 31606  	if !(objc != 3) {
 31607  		goto __372
 31608  	}
 31609  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 31610  	return TCL_ERROR
 31611  __372:
 31612  	;
 31613  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31614  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 31615  	goto __365
 31616  
 31617  __369:
 31618  __370:
 31619  	if !(objc != 4) {
 31620  		goto __373
 31621  	}
 31622  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 31623  	return TCL_ERROR
 31624  __373:
 31625  	;
 31626  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1476) != 0) {
 31627  		goto __374
 31628  	}
 31629  	return TCL_ERROR
 31630  __374:
 31631  	;
 31632  	if !(*(*int32)(unsafe.Pointer(bp + 1472)) == 4) {
 31633  		goto __375
 31634  	}
 31635  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 31636  	goto __376
 31637  __375:
 31638  	;
 31639  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 31640  __376:
 31641  	;
 31642  	if !(rc == SQLITE_OK) {
 31643  		goto __377
 31644  	}
 31645  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1480))), -1)
 31646  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 31647  	goto __378
 31648  __377:
 31649  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31650  	return TCL_ERROR
 31651  __378:
 31652  	;
 31653  __365:
 31654  	;
 31655  	goto __3
 31656  
 31657  __42:
 31658  __43:
 31659  __44:
 31660  	ppHook = uintptr(0)
 31661  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 31662  		goto __379
 31663  	}
 31664  	ppHook = pDb + 128
 31665  __379:
 31666  	;
 31667  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 31668  		goto __380
 31669  	}
 31670  	ppHook = pDb + 104
 31671  __380:
 31672  	;
 31673  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 31674  		goto __381
 31675  	}
 31676  	ppHook = pDb + 120
 31677  __381:
 31678  	;
 31679  	if !(objc > 3) {
 31680  		goto __382
 31681  	}
 31682  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31683  	return TCL_ERROR
 31684  __382:
 31685  	;
 31686  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31687  		if objc == 3 {
 31688  			return *(*uintptr)(unsafe.Pointer(objv + 2*8))
 31689  		}
 31690  		return uintptr(0)
 31691  	}(), ppHook)
 31692  	goto __3
 31693  
 31694  __45:
 31695  	i5 = 2
 31696  __383:
 31697  	if !(i5 < objc) {
 31698  		goto __385
 31699  	}
 31700  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)))
 31701  
 31702  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 31703  		goto __386
 31704  	}
 31705  	i5++
 31706  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)), pDb+228) != 0) {
 31707  		goto __388
 31708  	}
 31709  	return TCL_ERROR
 31710  __388:
 31711  	;
 31712  	goto __387
 31713  __386:
 31714  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 31715  		goto __389
 31716  	}
 31717  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+1488, ts+9889,
 31718  		libc.VaList(bp+984, func() uintptr {
 31719  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 31720  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 31721  			}
 31722  			return uintptr(0)
 31723  		}()))
 31724  	tcl.XTcl_SetResult(tls, interp, bp+1488, uintptr(1))
 31725  	goto __390
 31726  __389:
 31727  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 31728  	return TCL_ERROR
 31729  __390:
 31730  	;
 31731  __387:
 31732  	;
 31733  	goto __384
 31734  __384:
 31735  	i5++
 31736  	goto __383
 31737  	goto __385
 31738  __385:
 31739  	;
 31740  	if !(i5 == 2) {
 31741  		goto __391
 31742  	}
 31743  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 31744  __391:
 31745  	;
 31746  	goto __3
 31747  
 31748  __3:
 31749  	;
 31750  	return rc
 31751  }
 31752  
 31753  type DbConfigChoices = struct {
 31754  	FzName       uintptr
 31755  	Fop          int32
 31756  	F__ccgo_pad1 [4]byte
 31757  }
 31758  
 31759  var DB_strs = [43]uintptr{
 31760  	ts + 13351, ts + 13362, ts + 13369,
 31761  	ts + 13383, ts + 13388, ts + 13394,
 31762  	ts + 9490, ts + 13402, ts + 13410,
 31763  	ts + 13427, ts + 13439, ts + 13448,
 31764  	ts + 13455, ts + 13460, ts + 13472,
 31765  	ts + 13494, ts + 13504, ts + 4896,
 31766  	ts + 13516, ts + 13523, ts + 10868,
 31767  	ts + 13532, ts + 13542, ts + 13560,
 31768  	ts + 13570, ts + 13580, ts + 13590,
 31769  	ts + 9564, ts + 13598, ts + 13604,
 31770  	ts + 13612, ts + 13626, ts + 13636,
 31771  	ts + 13643, ts + 13651, ts + 13665,
 31772  	ts + 13671, ts + 13680, ts + 13692,
 31773  	ts + 13706, ts + 13718, ts + 13726,
 31774  	uintptr(0),
 31775  }
 31776  var aDbConfig = [16]DbConfigChoices{
 31777  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 31778  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 31779  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 31780  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 31781  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 31782  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 31783  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 31784  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 31785  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 31786  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 31787  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 31788  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 31789  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 31790  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 31791  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 31792  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 31793  }
 31794  var TTYPE_strs = [5]uintptr{
 31795  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 31796  }
 31797  var TTYPE_strs1 = [4]uintptr{
 31798  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 31799  }
 31800  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 31801  
 31802  func DbObjCmdAdaptor(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31803  	return tcl.XTcl_NRCallObjProc(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31804  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31805  	}{DbObjCmd})), cd, objc, objv)
 31806  }
 31807  
 31808  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 31809  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 31810  		ts+14017)
 31811  	return TCL_ERROR
 31812  }
 31813  
 31814  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31815  	bp := tls.Alloc(336)
 31816  	defer tls.Free(336)
 31817  
 31818  	var p uintptr
 31819  	var zArg uintptr
 31820  	var zErrMsg uintptr
 31821  	var i int32
 31822  	var zFile uintptr = uintptr(0)
 31823  	var zVfs uintptr = uintptr(0)
 31824  	var flags int32
 31825  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 31826  
 31827  	var rc int32
 31828  
 31829  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 31830  
 31831  	if objc == 1 {
 31832  		return sqliteCmdUsage(tls, interp, objv)
 31833  	}
 31834  	if objc == 2 {
 31835  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31836  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 31837  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 31838  			return TCL_OK
 31839  		}
 31840  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 31841  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 31842  			return TCL_OK
 31843  		}
 31844  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 31845  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 31846  			return TCL_OK
 31847  		}
 31848  		if int32(*(*uint8)(unsafe.Pointer(zArg))) == '-' {
 31849  			return sqliteCmdUsage(tls, interp, objv)
 31850  		}
 31851  	}
 31852  	for i = 2; i < objc; i++ {
 31853  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31854  		if int32(*(*uint8)(unsafe.Pointer(zArg))) != '-' {
 31855  			if zFile != uintptr(0) {
 31856  				return sqliteCmdUsage(tls, interp, objv)
 31857  			}
 31858  			zFile = zArg
 31859  			continue
 31860  		}
 31861  		if i == objc-1 {
 31862  			return sqliteCmdUsage(tls, interp, objv)
 31863  		}
 31864  		i++
 31865  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 31866  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 31867  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31868  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 31869  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0 {
 31870  				return TCL_ERROR
 31871  			}
 31872  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 31873  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 31874  				flags = flags | SQLITE_OPEN_READONLY
 31875  			} else {
 31876  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 31877  				flags = flags | SQLITE_OPEN_READWRITE
 31878  			}
 31879  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 31880  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+92) != 0 {
 31881  				return TCL_ERROR
 31882  			}
 31883  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 31884  				flags = flags | SQLITE_OPEN_CREATE
 31885  			} else {
 31886  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 31887  			}
 31888  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 31889  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+96) != 0 {
 31890  				return TCL_ERROR
 31891  			}
 31892  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 31893  				flags = flags | SQLITE_OPEN_NOFOLLOW
 31894  			} else {
 31895  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 31896  			}
 31897  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 31898  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+100) != 0 {
 31899  				return TCL_ERROR
 31900  			}
 31901  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 31902  				flags = flags | SQLITE_OPEN_NOMUTEX
 31903  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31904  			} else {
 31905  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31906  			}
 31907  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 31908  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+104) != 0 {
 31909  				return TCL_ERROR
 31910  			}
 31911  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 31912  				flags = flags | SQLITE_OPEN_FULLMUTEX
 31913  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31914  			} else {
 31915  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31916  			}
 31917  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 31918  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+108) != 0 {
 31919  				return TCL_ERROR
 31920  			}
 31921  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 31922  				flags = flags | SQLITE_OPEN_URI
 31923  			} else {
 31924  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 31925  			}
 31926  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 31927  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+112) != 0 {
 31928  				return TCL_ERROR
 31929  			}
 31930  		} else {
 31931  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 31932  			return TCL_ERROR
 31933  		}
 31934  	}
 31935  	zErrMsg = uintptr(0)
 31936  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 31937  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(SqliteDb{})))
 31938  	if zFile == uintptr(0) {
 31939  		zFile = ts + 584
 31940  	}
 31941  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31942  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+120)
 31943  	}
 31944  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 31945  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31946  		tcl.XTcl_DStringFree(tls, bp+120)
 31947  	}
 31948  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 31949  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 31950  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 31951  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 31952  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 31953  		}
 31954  	} else {
 31955  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 31956  	}
 31957  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 31958  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 31959  		tcl.XTcl_Free(tls, p)
 31960  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 31961  		return TCL_ERROR
 31962  	}
 31963  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 31964  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 31965  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 31966  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31967  	if DbUseNre(tls) != 0 {
 31968  		tcl.XTcl_NRCreateCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31969  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31970  		}{DbObjCmdAdaptor})), *(*uintptr)(unsafe.Pointer(&struct {
 31971  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31972  		}{DbObjCmd})),
 31973  			p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31974  	} else {
 31975  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31976  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31977  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31978  	}
 31979  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 31980  	return TCL_OK
 31981  }
 31982  
 31983  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31984  	var rc int32
 31985  	if 1 != 0 {
 31986  		rc = TCL_OK
 31987  	} else {
 31988  		rc = TCL_ERROR
 31989  	}
 31990  	if rc == TCL_OK {
 31991  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 31992  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31993  		}{DbMain})), uintptr(0), uintptr(0))
 31994  
 31995  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 31996  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31997  		}{DbMain})), uintptr(0), uintptr(0))
 31998  		rc = tcl.XTcl_PkgProvideEx(tls, interp, ts+14267, ts+14282, uintptr(0))
 31999  	}
 32000  	return rc
 32001  }
 32002  
 32003  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 32004  	return Sqlite3_Init(tls, interp)
 32005  }
 32006  
 32007  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32008  	return TCL_OK
 32009  }
 32010  
 32011  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32012  	return TCL_OK
 32013  }
 32014  
 32015  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 32016  	return TCL_ERROR
 32017  }
 32018  
 32019  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32020  	return TCL_ERROR
 32021  }
 32022  
 32023  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 32024  	return Sqlite3_Init(tls, interp)
 32025  }
 32026  
 32027  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 32028  	return Sqlite3_Init(tls, interp)
 32029  }
 32030  
 32031  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32032  	return TCL_OK
 32033  }
 32034  
 32035  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 32036  	return TCL_OK
 32037  }
 32038  
 32039  func tclsh_main_loop(tls *libc.TLS) uintptr {
 32040  	return uintptr(unsafe.Pointer(&zMainloop))
 32041  }
 32042  
 32043  var zMainloop = *(*[431]uint8)(unsafe.Pointer(ts + 14289))
 32044  
 32045  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 32046  	bp := tls.Alloc(64)
 32047  	defer tls.Free(64)
 32048  
 32049  	var interp uintptr
 32050  	var i int32
 32051  	var zScript uintptr = uintptr(0)
 32052  
 32053  	if libc.Xgetenv(tls, ts+14720) != 0 {
 32054  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 32055  			libc.Xfprintf(tls, libc.Xstderr,
 32056  				ts+14739,
 32057  				libc.VaList(bp, libc.Xgetpid(tls)))
 32058  			libc.Xfgetc(tls, libc.Xstdin)
 32059  		} else {
 32060  			libc.Xraise(tls, SIGTRAP)
 32061  		}
 32062  	}
 32063  
 32064  	sqlite3.Xsqlite3_shutdown(tls)
 32065  
 32066  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32067  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 32068  	interp = tcl.XTcl_CreateInterp(tls)
 32069  	Sqlite3_Init(tls, interp)
 32070  
 32071  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]uint8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 32072  	tcl.XTcl_SetVar2(tls, interp, ts+14807, uintptr(0), bp+32, TCL_GLOBAL_ONLY)
 32073  	tcl.XTcl_SetVar2(tls, interp, ts+14812, uintptr(0), *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 32074  	tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), ts+584, TCL_GLOBAL_ONLY)
 32075  	for i = 1; i < argc; i++ {
 32076  		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)
 32077  	}
 32078  	zScript = sqlite3TestInit(tls, interp)
 32079  	if zScript == uintptr(0) {
 32080  		zScript = tclsh_main_loop(tls)
 32081  	}
 32082  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 32083  		var zInfo uintptr = tcl.XTcl_GetVar2(tls, interp, ts+14823, uintptr(0), TCL_GLOBAL_ONLY)
 32084  		if zInfo == uintptr(0) {
 32085  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 32086  		}
 32087  		libc.Xfprintf(tls, libc.Xstderr, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 32088  		return 1
 32089  	}
 32090  	return 0
 32091  }
 32092  
 32093  type sqlite3_value = sqlite3_value1
 32094  
 32095  type sqlite3_context = sqlite3_context1
 32096  
 32097  type _IO_cookie_io_functions_t = struct {
 32098  	Fread  uintptr
 32099  	Fwrite uintptr
 32100  	Fseek  uintptr
 32101  	Fclose uintptr
 32102  }
 32103  
 32104  type cookie_io_functions_t = _IO_cookie_io_functions_t
 32105  type off64_t = int64
 32106  type fpos64_t = _G_fpos64_t
 32107  type ino64_t = uint64
 32108  
 32109  type fd_set1 = struct{ Ffds_bits [16]int64 }
 32110  
 32111  type blkcnt64_t = int64
 32112  type fsblkcnt64_t = uint64
 32113  type fsfilcnt64_t = uint64
 32114  
 32115  type comparison_fn_t = uintptr
 32116  type PreUpdate = PreUpdate1
 32117  
 32118  type Vdbe = Vdbe1
 32119  
 32120  type Mem = sqlite3_value1
 32121  
 32122  type Op = VdbeOp1
 32123  
 32124  type Bool = uint32
 32125  
 32126  type AuxData1 = struct {
 32127  	FiAuxOp     int32
 32128  	FiAuxArg    int32
 32129  	FpAux       uintptr
 32130  	FxDeleteAux uintptr
 32131  	FpNextAux   uintptr
 32132  }
 32133  
 32134  type AuxData = AuxData1
 32135  
 32136  type VdbeCursor1 = struct {
 32137  	FeCurType       u8
 32138  	FiDb            i8
 32139  	FnullRow        u8
 32140  	FdeferredMoveto u8
 32141  	FisTable        u8
 32142  	F__ccgo_pad1    [3]byte
 32143  	FisEphemeral    uint8
 32144  	F__ccgo_pad2    [1]byte
 32145  	FseekHit        u16
 32146  	F__ccgo_pad3    [4]byte
 32147  	Fub             struct{ FpBtx uintptr }
 32148  	FseqCount       i64
 32149  	FcacheStatus    u32
 32150  	FseekResult     int32
 32151  	FpAltCursor     uintptr
 32152  	Fuc             struct{ FpCursor uintptr }
 32153  	FpKeyInfo       uintptr
 32154  	FiHdrOffset     u32
 32155  	FpgnoRoot       Pgno
 32156  	FnField         i16
 32157  	FnHdrParsed     u16
 32158  	F__ccgo_pad4    [4]byte
 32159  	FmovetoTarget   i64
 32160  	FaOffset        uintptr
 32161  	FaRow           uintptr
 32162  	FpayloadSize    u32
 32163  	FszRow          u32
 32164  	FaType          [1]u32
 32165  	F__ccgo_pad5    [4]byte
 32166  }
 32167  
 32168  type VdbeCursor = VdbeCursor1
 32169  
 32170  type VdbeFrame1 = struct {
 32171  	Fv         uintptr
 32172  	FpParent   uintptr
 32173  	FaOp       uintptr
 32174  	FanExec    uintptr
 32175  	FaMem      uintptr
 32176  	FapCsr     uintptr
 32177  	FaOnce     uintptr
 32178  	Ftoken     uintptr
 32179  	FlastRowid i64
 32180  	FpAuxData  uintptr
 32181  	FnCursor   int32
 32182  	Fpc        int32
 32183  	FnOp       int32
 32184  	FnMem      int32
 32185  	FnChildMem int32
 32186  	FnChildCsr int32
 32187  	FnChange   i64
 32188  	FnDbChange i64
 32189  }
 32190  
 32191  type VdbeFrame = VdbeFrame1
 32192  
 32193  type MemValue = struct{ Fr float64 }
 32194  
 32195  type bft = uint32
 32196  
 32197  type ScanStatus1 = struct {
 32198  	FaddrExplain int32
 32199  	FaddrLoop    int32
 32200  	FaddrVisit   int32
 32201  	FiSelectID   int32
 32202  	FnEst        LogEst
 32203  	F__ccgo_pad1 [6]byte
 32204  	FzName       uintptr
 32205  }
 32206  
 32207  type ScanStatus = ScanStatus1
 32208  
 32209  type DblquoteStr1 = struct {
 32210  	FpNextStr uintptr
 32211  	Fz        [8]uint8
 32212  }
 32213  
 32214  type DblquoteStr = DblquoteStr1
 32215  
 32216  type ValueList1 = struct {
 32217  	FpCsr uintptr
 32218  	FpOut uintptr
 32219  }
 32220  
 32221  type ValueList = ValueList1
 32222  
 32223  func testHexToInt(tls *libc.TLS, h int32) int32 {
 32224  	if h >= '0' && h <= '9' {
 32225  		return h - '0'
 32226  	} else if h >= 'a' && h <= 'f' {
 32227  		return h - 'a' + 10
 32228  	} else {
 32229  		return h - 'A' + 10
 32230  	}
 32231  	return int32(0)
 32232  }
 32233  
 32234  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 32235  	bp := tls.Alloc(20)
 32236  	defer tls.Free(20)
 32237  
 32238  	if int32(*(*uint8)(unsafe.Pointer(z))) == '0' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == 'x' {
 32239  		z += uintptr(2)
 32240  	}
 32241  	*(*u64)(unsafe.Pointer(bp + 8)) = uint64(0)
 32242  	for *(*uint8)(unsafe.Pointer(z)) != 0 {
 32243  		*(*u64)(unsafe.Pointer(bp + 8)) = *(*u64)(unsafe.Pointer(bp + 8))<<4 + u64(testHexToInt(tls, int32(*(*uint8)(unsafe.Pointer(z)))))
 32244  		z++
 32245  	}
 32246  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(u64(0))) {
 32247  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 32248  	} else {
 32249  		*(*u32)(unsafe.Pointer(bp + 16)) = u32(*(*u64)(unsafe.Pointer(bp + 8)))
 32250  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 32251  	}
 32252  	return *(*uintptr)(unsafe.Pointer(bp))
 32253  }
 32254  
 32255  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 32256  	bp := tls.Alloc(212)
 32257  	defer tls.Free(212)
 32258  
 32259  	var p uintptr
 32260  
 32261  	if objc != 2 {
 32262  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 32263  		return TCL_ERROR
 32264  	}
 32265  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 32266  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 32267  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 32268  		return TCL_ERROR
 32269  	}
 32270  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 32271  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+112, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 32272  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+112, 0))
 32273  	return TCL_OK
 32274  }
 32275  
 32276  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 32277  	bp := tls.Alloc(64)
 32278  	defer tls.Free(64)
 32279  
 32280  	var p uintptr
 32281  
 32282  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 32283  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 32284  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 32285  	} else {
 32286  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 32287  	}
 32288  	return TCL_OK
 32289  }
 32290  
 32291  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 32292  	bp := tls.Alloc(248)
 32293  	defer tls.Free(248)
 32294  
 32295  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 32296  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 32297  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 32298  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+48,
 32299  			ts+14879,
 32300  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 32301  		tcl.XTcl_ResetResult(tls, interp)
 32302  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 32303  		return 1
 32304  	}
 32305  	return 0
 32306  }
 32307  
 32308  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 32309  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 32310  	return TCL_OK
 32311  }
 32312  
 32313  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 32314  	bp := tls.Alloc(8)
 32315  	defer tls.Free(8)
 32316  
 32317  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 32318  	return TCL_OK
 32319  }
 32320  
 32321  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 32322  	var str uintptr = pArg
 32323  	var i int32
 32324  
 32325  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 32326  		for i = 0; i < argc; i++ {
 32327  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32328  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8)) != 0 {
 32329  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8))
 32330  				}
 32331  				return ts + 5846
 32332  			}())
 32333  		}
 32334  	}
 32335  	for i = 0; i < argc; i++ {
 32336  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32337  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 32338  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 32339  			}
 32340  			return ts + 5846
 32341  		}())
 32342  	}
 32343  	return 0
 32344  }
 32345  
 32346  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32347  	return TCL_OK
 32348  }
 32349  
 32350  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32351  	var res int32 = 0
 32352  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 32353  		res = 1
 32354  	}
 32355  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 32356  	return TCL_OK
 32357  }
 32358  
 32359  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32360  	bp := tls.Alloc(310)
 32361  	defer tls.Free(310)
 32362  
 32363  	var rc int32
 32364  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 32365  	var zSql uintptr
 32366  
 32367  	if argc != 4 {
 32368  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32369  			ts+14975, 0))
 32370  		return TCL_ERROR
 32371  	}
 32372  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 32373  		return TCL_ERROR
 32374  	}
 32375  	tcl.XTcl_DStringInit(tls, bp+56)
 32376  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 32377  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32378  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32379  	}{exec_printf_cb})), bp+56, bp+272)
 32380  	sqlite3.Xsqlite3_free(tls, zSql)
 32381  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 32382  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 32383  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32384  		if rc == SQLITE_OK {
 32385  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 32386  		}
 32387  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 32388  	}())
 32389  	tcl.XTcl_DStringFree(tls, bp+56)
 32390  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 32391  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 32392  	}
 32393  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32394  		return TCL_ERROR
 32395  	}
 32396  	return TCL_OK
 32397  }
 32398  
 32399  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32400  	bp := tls.Alloc(806)
 32401  	defer tls.Free(806)
 32402  
 32403  	var rc int32
 32404  	var i int32
 32405  	var j int32
 32406  	*(*uintptr)(unsafe.Pointer(bp + 768)) = uintptr(0)
 32407  	var zHex uintptr
 32408  
 32409  	if argc != 3 {
 32410  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32411  			ts+14993, 0))
 32412  		return TCL_ERROR
 32413  	}
 32414  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 32415  		return TCL_ERROR
 32416  	}
 32417  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 32418  	i = libc.AssignInt32(&j, 0)
 32419  __1:
 32420  	if !(uint64(i) < uint64(unsafe.Sizeof([501]uint8{}))-uint64(1) && *(*uint8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 32421  		goto __3
 32422  	}
 32423  	{
 32424  		if int32(*(*uint8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*uint8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*uint8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 32425  			*(*uint8)(unsafe.Pointer(bp + 48 + uintptr(i))) = uint8(testHexToInt(tls, int32(*(*uint8)(unsafe.Pointer(zHex + uintptr(j+1)))))<<4 + testHexToInt(tls, int32(*(*uint8)(unsafe.Pointer(zHex + uintptr(j+2))))))
 32426  			j = j + 2
 32427  		} else {
 32428  			*(*uint8)(unsafe.Pointer(bp + 48 + uintptr(i))) = *(*uint8)(unsafe.Pointer(zHex + uintptr(j)))
 32429  		}
 32430  
 32431  	}
 32432  	goto __2
 32433  __2:
 32434  	i++
 32435  	j++
 32436  	goto __1
 32437  	goto __3
 32438  __3:
 32439  	;
 32440  	*(*uint8)(unsafe.Pointer(bp + 48 + uintptr(i))) = uint8(0)
 32441  	tcl.XTcl_DStringInit(tls, bp+552)
 32442  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48, *(*uintptr)(unsafe.Pointer(&struct {
 32443  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32444  	}{exec_printf_cb})), bp+552, bp+768)
 32445  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+776, ts+1333, libc.VaList(bp+32, rc))
 32446  	tcl.XTcl_AppendElement(tls, interp, bp+776)
 32447  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32448  		if rc == SQLITE_OK {
 32449  			return (*Tcl_DString)(unsafe.Pointer(bp + 552)).Fstring
 32450  		}
 32451  		return *(*uintptr)(unsafe.Pointer(bp + 768))
 32452  	}())
 32453  	tcl.XTcl_DStringFree(tls, bp+552)
 32454  	if *(*uintptr)(unsafe.Pointer(bp + 768)) != 0 {
 32455  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 768)))
 32456  	}
 32457  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 32458  		return TCL_ERROR
 32459  	}
 32460  	return TCL_OK
 32461  }
 32462  
 32463  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32464  	bp := tls.Alloc(40)
 32465  	defer tls.Free(40)
 32466  
 32467  	if argc != 2 {
 32468  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32469  			ts+15001, 0))
 32470  		return TCL_ERROR
 32471  	}
 32472  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32473  		return TCL_ERROR
 32474  	}
 32475  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32476  	return TCL_OK
 32477  }
 32478  
 32479  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32480  	bp := tls.Alloc(40)
 32481  	defer tls.Free(40)
 32482  
 32483  	if argc != 2 {
 32484  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32485  			ts+15001, 0))
 32486  		return TCL_ERROR
 32487  	}
 32488  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32489  		return TCL_ERROR
 32490  	}
 32491  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32492  	return TCL_OK
 32493  }
 32494  
 32495  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32496  	bp := tls.Alloc(310)
 32497  	defer tls.Free(310)
 32498  
 32499  	var rc int32
 32500  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 32501  	var zSql uintptr
 32502  	var i int32
 32503  	var j int32
 32504  
 32505  	if argc != 3 {
 32506  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32507  			ts+15005, 0))
 32508  		return TCL_ERROR
 32509  	}
 32510  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 32511  		return TCL_ERROR
 32512  	}
 32513  	tcl.XTcl_DStringInit(tls, bp+56)
 32514  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 32515  	for i = libc.AssignInt32(&j, 0); *(*uint8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 32516  		if int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 32517  			*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(testHexToInt(tls, int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(i+1)))))<<4 + testHexToInt(tls, int32(*(*uint8)(unsafe.Pointer(zSql + uintptr(i+2))))))
 32518  			i = i + 3
 32519  		} else {
 32520  			*(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 32521  		}
 32522  	}
 32523  	*(*uint8)(unsafe.Pointer(zSql + uintptr(j))) = uint8(0)
 32524  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32525  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32526  	}{exec_printf_cb})), bp+56, bp+272)
 32527  	sqlite3.Xsqlite3_free(tls, zSql)
 32528  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 32529  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 32530  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32531  		if rc == SQLITE_OK {
 32532  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 32533  		}
 32534  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 32535  	}())
 32536  	tcl.XTcl_DStringFree(tls, bp+56)
 32537  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 32538  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 32539  	}
 32540  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32541  		return TCL_ERROR
 32542  	}
 32543  	return TCL_OK
 32544  }
 32545  
 32546  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32547  	bp := tls.Alloc(48)
 32548  	defer tls.Free(48)
 32549  
 32550  	var rc int32
 32551  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 32552  	if argc != 3 {
 32553  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32554  			ts+15005, 0))
 32555  		return TCL_ERROR
 32556  	}
 32557  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32558  		return TCL_ERROR
 32559  	}
 32560  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), uintptr(0), uintptr(0), bp+40)
 32561  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32562  		return TCL_ERROR
 32563  	}
 32564  	return TCL_OK
 32565  }
 32566  
 32567  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32568  	bp := tls.Alloc(40)
 32569  	defer tls.Free(40)
 32570  
 32571  	var zResult uintptr = uintptr(0)
 32572  	var i int32
 32573  
 32574  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 32575  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*8)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 32576  	}
 32577  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 32578  	sqlite3.Xsqlite3_free(tls, zResult)
 32579  	return TCL_OK
 32580  }
 32581  
 32582  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32583  	bp := tls.Alloc(20)
 32584  	defer tls.Free(20)
 32585  
 32586  	var zStr uintptr
 32587  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 32588  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+16))
 32589  	sqlite3.Xsqlite3_free(tls, zStr)
 32590  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 32591  	return TCL_OK
 32592  }
 32593  
 32594  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32595  	bp := tls.Alloc(124)
 32596  	defer tls.Free(124)
 32597  
 32598  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32599  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 32600  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32601  	if uint64(n) > uint64(unsafe.Sizeof([100]uint8{})) {
 32602  		n = int32(unsafe.Sizeof([100]uint8{}))
 32603  	}
 32604  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+24, ts+15025, 0)
 32605  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 32606  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 32607  	return TCL_OK
 32608  }
 32609  
 32610  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32611  	bp := tls.Alloc(350)
 32612  	defer tls.Free(350)
 32613  
 32614  	var rc int32
 32615  	*(*uintptr)(unsafe.Pointer(bp + 304)) = uintptr(0)
 32616  	*(*int32)(unsafe.Pointer(bp + 312)) = 0
 32617  	*(*int32)(unsafe.Pointer(bp + 316)) = 0
 32618  
 32619  	var i int32
 32620  
 32621  	var zSql uintptr
 32622  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 32623  	if argc == 5 {
 32624  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+64) != 0 {
 32625  			return TCL_ERROR
 32626  		}
 32627  	}
 32628  	if argc != 4 && argc != 5 {
 32629  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32630  			ts+15052, 0))
 32631  		return TCL_ERROR
 32632  	}
 32633  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) != 0 {
 32634  		return TCL_ERROR
 32635  	}
 32636  	tcl.XTcl_DStringInit(tls, bp+80)
 32637  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 32638  	if argc == 5 {
 32639  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, uintptr(0), uintptr(0), bp+304)
 32640  	} else {
 32641  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, bp+312, bp+316, bp+304)
 32642  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 312)) + 1) * *(*int32)(unsafe.Pointer(bp + 316))
 32643  	}
 32644  	sqlite3.Xsqlite3_free(tls, zSql)
 32645  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+320, ts+1333, libc.VaList(bp+40, rc))
 32646  	tcl.XTcl_AppendElement(tls, interp, bp+320)
 32647  	if rc == SQLITE_OK {
 32648  		if argc == 4 {
 32649  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+320, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 312))))
 32650  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 32651  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+320, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 316))))
 32652  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 32653  		}
 32654  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 32655  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32656  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8)) != 0 {
 32657  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8))
 32658  				}
 32659  				return ts + 5846
 32660  			}())
 32661  		}
 32662  	} else {
 32663  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 304)))
 32664  	}
 32665  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 296)))
 32666  	if *(*uintptr)(unsafe.Pointer(bp + 304)) != 0 {
 32667  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 304)))
 32668  	}
 32669  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 72)), rc) != 0 {
 32670  		return TCL_ERROR
 32671  	}
 32672  	return TCL_OK
 32673  }
 32674  
 32675  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32676  	bp := tls.Alloc(94)
 32677  	defer tls.Free(94)
 32678  
 32679  	if argc != 2 {
 32680  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 32681  		return TCL_ERROR
 32682  	}
 32683  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 32684  		return TCL_ERROR
 32685  	}
 32686  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+64, ts+6325, libc.VaList(bp+32, sqlite3.Xsqlite3_last_insert_rowid(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 32687  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 32688  	return SQLITE_OK
 32689  }
 32690  
 32691  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32692  	return TCL_OK
 32693  }
 32694  
 32695  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32696  	return TCL_OK
 32697  }
 32698  
 32699  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32700  	bp := tls.Alloc(40)
 32701  	defer tls.Free(40)
 32702  
 32703  	var rc int32
 32704  	if argc != 2 {
 32705  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32706  			ts+15083, 0))
 32707  		return TCL_ERROR
 32708  	}
 32709  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32710  		return TCL_ERROR
 32711  	}
 32712  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32713  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32714  	return TCL_OK
 32715  }
 32716  
 32717  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32718  	bp := tls.Alloc(40)
 32719  	defer tls.Free(40)
 32720  
 32721  	var rc int32
 32722  	if argc != 2 {
 32723  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32724  			ts+15083, 0))
 32725  		return TCL_ERROR
 32726  	}
 32727  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32728  		return TCL_ERROR
 32729  	}
 32730  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32731  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32732  	return TCL_OK
 32733  }
 32734  
 32735  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32736  	var i int32
 32737  	for i = 0; i < argc; i++ {
 32738  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) {
 32739  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 32740  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))),
 32741  				n, libc.UintptrFromInt32(-1))
 32742  			break
 32743  		}
 32744  	}
 32745  }
 32746  
 32747  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 32748  	bp := tls.Alloc(208)
 32749  	defer tls.Free(208)
 32750  
 32751  	var z uintptr
 32752  	var i int32
 32753  
 32754  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32755  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([200]uint8{}))/uint64(2)-uint64(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 32756  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([200]uint8{}))-uint64(i*2)), bp+8+uintptr(i*2), ts+6337, libc.VaList(bp, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))))
 32757  	}
 32758  	*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = uint8(0)
 32759  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 32760  }
 32761  
 32762  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 32763  	bp := tls.Alloc(408)
 32764  	defer tls.Free(408)
 32765  
 32766  	var z uintptr
 32767  	var i int32
 32768  
 32769  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32770  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([400]uint8{}))/uint64(4)-uint64(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 32771  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([400]uint8{}))-uint64(i*4)), bp+8+uintptr(i*4), ts+15094, libc.VaList(bp, int32(*(*uint16)(unsafe.Pointer(z + uintptr(i)*2)))&0xff))
 32772  	}
 32773  	*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = uint8(0)
 32774  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 32775  }
 32776  
 32777  type dstr = struct {
 32778  	FnAlloc int32
 32779  	FnUsed  int32
 32780  	Fz      uintptr
 32781  }
 32782  
 32783  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 32784  	var n int32 = int32(libc.Xstrlen(tls, z))
 32785  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 32786  		var zNew uintptr
 32787  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 32788  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 32789  		if zNew == uintptr(0) {
 32790  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 32791  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(dstr{})))
 32792  			return
 32793  		}
 32794  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 32795  	}
 32796  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 32797  		*(*uint8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = uint8(divider)
 32798  	}
 32799  	libc.Xmemcpy(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint64(n+1))
 32800  	*(*int32)(unsafe.Pointer(p + 4)) += n
 32801  }
 32802  
 32803  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 32804  	var p uintptr = pData
 32805  	var i int32
 32806  	for i = 0; i < argc; i++ {
 32807  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) == uintptr(0) {
 32808  			dstrAppend(tls, p, ts+5846, ' ')
 32809  		} else {
 32810  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ' ')
 32811  		}
 32812  	}
 32813  	return 0
 32814  }
 32815  
 32816  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32817  	bp := tls.Alloc(16)
 32818  	defer tls.Free(16)
 32819  
 32820  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(dstr{})))
 32821  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 32822  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 32823  		*(*uintptr)(unsafe.Pointer(&struct {
 32824  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32825  		}{execFuncCallback})), bp, uintptr(0))
 32826  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 32827  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 32828  }
 32829  
 32830  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32831  	var nText int32
 32832  	var zText1 uintptr
 32833  	var zText2 uintptr
 32834  	var zText3 uintptr
 32835  
 32836  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32837  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32838  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32839  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32840  
 32841  	if zText1 != zText2 || zText2 != zText3 {
 32842  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 32843  	} else {
 32844  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 32845  		libc.Xmemcpy(tls, zCopy, zText1, uint64(nText))
 32846  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 32847  	}
 32848  }
 32849  
 32850  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32851  	var p1 uintptr
 32852  	var p2 uintptr
 32853  	var zCmd uintptr
 32854  	if argc != 4 {
 32855  		return
 32856  	}
 32857  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32858  	if zCmd == uintptr(0) {
 32859  		return
 32860  	}
 32861  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32862  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32863  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32864  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32865  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32866  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32867  	} else {
 32868  		return
 32869  	}
 32870  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 32871  	if zCmd == uintptr(0) {
 32872  		return
 32873  	}
 32874  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 32875  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32876  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 32877  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32878  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 32879  	} else {
 32880  		return
 32881  	}
 32882  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32883  	if zCmd == uintptr(0) {
 32884  		return
 32885  	}
 32886  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32887  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32888  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32889  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32890  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32891  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32892  	} else {
 32893  		return
 32894  	}
 32895  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 32896  }
 32897  
 32898  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32899  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 32900  }
 32901  
 32902  var cnt int32 = 0
 32903  
 32904  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32905  	bp := tls.Alloc(8)
 32906  	defer tls.Free(8)
 32907  
 32908  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32909  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 32910  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 32911  }
 32912  
 32913  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32914  	bp := tls.Alloc(40)
 32915  	defer tls.Free(40)
 32916  
 32917  	var rc int32
 32918  
 32919  	if argc != 2 {
 32920  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32921  			ts+15078, 0))
 32922  		return TCL_ERROR
 32923  	}
 32924  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32925  		return TCL_ERROR
 32926  	}
 32927  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 32928  		*(*uintptr)(unsafe.Pointer(&struct {
 32929  			f func(*libc.TLS, uintptr, int32, uintptr)
 32930  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 32931  	if rc == SQLITE_OK {
 32932  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32933  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32934  				f func(*libc.TLS, uintptr, int32, uintptr)
 32935  			}{hex8Func})), uintptr(0), uintptr(0))
 32936  	}
 32937  	if rc == SQLITE_OK {
 32938  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 32939  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32940  				f func(*libc.TLS, uintptr, int32, uintptr)
 32941  			}{hex16Func})), uintptr(0), uintptr(0))
 32942  	}
 32943  	if rc == SQLITE_OK {
 32944  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 32945  			*(*uintptr)(unsafe.Pointer(&struct {
 32946  				f func(*libc.TLS, uintptr, int32, uintptr)
 32947  			}{tkt2213Function})), uintptr(0), uintptr(0))
 32948  	}
 32949  	if rc == SQLITE_OK {
 32950  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 32951  			*(*uintptr)(unsafe.Pointer(&struct {
 32952  				f func(*libc.TLS, uintptr, int32, uintptr)
 32953  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 32954  	}
 32955  
 32956  	if rc == SQLITE_OK {
 32957  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 32958  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32959  				f func(*libc.TLS, uintptr, int32, uintptr)
 32960  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32961  	}
 32962  	if rc == SQLITE_OK {
 32963  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32964  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32965  				f func(*libc.TLS, uintptr, int32, uintptr)
 32966  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32967  	}
 32968  
 32969  	if rc == SQLITE_OK {
 32970  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 32971  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32972  				f func(*libc.TLS, uintptr, int32, uintptr)
 32973  			}{intrealFunction})), uintptr(0), uintptr(0))
 32974  	}
 32975  
 32976  	if rc == SQLITE_OK {
 32977  		var zUtf16 uintptr
 32978  		var pVal uintptr
 32979  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32980  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32981  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 32982  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 32983  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 32984  			rc = SQLITE_NOMEM
 32985  		} else {
 32986  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 32987  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 32988  					f func(*libc.TLS, uintptr, int32, uintptr)
 32989  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 32990  		}
 32991  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 32992  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32993  	}
 32994  
 32995  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32996  		return TCL_ERROR
 32997  	}
 32998  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32999  	return TCL_OK
 33000  }
 33001  
 33002  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33003  	bp := tls.Alloc(40)
 33004  	defer tls.Free(40)
 33005  
 33006  	if argc < 2 {
 33007  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33008  			ts+15078, 0))
 33009  		return TCL_ERROR
 33010  	}
 33011  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33012  		return TCL_ERROR
 33013  	}
 33014  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 33015  		if argc > 2 {
 33016  			return argv + uintptr(2)*8
 33017  		}
 33018  		return uintptr(0)
 33019  	}())
 33020  	return TCL_OK
 33021  }
 33022  
 33023  type t1CountCtx1 = struct{ Fn int32 }
 33024  
 33025  type t1CountCtx = t1CountCtx1
 33026  
 33027  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33028  	bp := tls.Alloc(9)
 33029  	defer tls.Free(9)
 33030  
 33031  	var p uintptr
 33032  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 33033  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 33034  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 33035  	}
 33036  	if argc > 0 {
 33037  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33038  		if v == 40 {
 33039  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 33040  		} else if v == 41 {
 33041  			*(*[9]uint8)(unsafe.Pointer(bp)) = [9]uint8{uint8(0), uint8(0x61), uint8(0), uint8(0x62), uint8(0), uint8(0x63), uint8(0), uint8(0), uint8(0)}
 33042  			sqlite3.Xsqlite3_result_error16(tls, context, bp+1, -1)
 33043  		}
 33044  	}
 33045  }
 33046  
 33047  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 33048  	var p uintptr
 33049  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 33050  	if p != 0 {
 33051  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 33052  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 33053  		} else {
 33054  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 33055  				if p != 0 {
 33056  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 33057  				}
 33058  				return 0
 33059  			}())
 33060  		}
 33061  	}
 33062  }
 33063  
 33064  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33065  }
 33066  
 33067  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 33068  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 33069  }
 33070  
 33071  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33072  	bp := tls.Alloc(40)
 33073  	defer tls.Free(40)
 33074  
 33075  	var rc int32
 33076  	if argc != 2 {
 33077  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33078  			ts+15083, 0))
 33079  		return TCL_ERROR
 33080  	}
 33081  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 33082  		return TCL_ERROR
 33083  	}
 33084  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 33085  		*(*uintptr)(unsafe.Pointer(&struct {
 33086  			f func(*libc.TLS, uintptr, int32, uintptr)
 33087  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 33088  	if rc == SQLITE_OK {
 33089  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 33090  			*(*uintptr)(unsafe.Pointer(&struct {
 33091  				f func(*libc.TLS, uintptr, int32, uintptr)
 33092  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 33093  	}
 33094  	if rc == SQLITE_OK {
 33095  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 33096  			*(*uintptr)(unsafe.Pointer(&struct {
 33097  				f func(*libc.TLS, uintptr, int32, uintptr)
 33098  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 33099  	}
 33100  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 33101  		return TCL_ERROR
 33102  	}
 33103  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33104  	return TCL_OK
 33105  }
 33106  
 33107  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33108  	bp := tls.Alloc(40)
 33109  	defer tls.Free(40)
 33110  
 33111  	if argc != 2 {
 33112  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33113  			ts+15307, 0))
 33114  		return TCL_ERROR
 33115  	}
 33116  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33117  	return TCL_OK
 33118  }
 33119  
 33120  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33121  	bp := tls.Alloc(84)
 33122  	defer tls.Free(84)
 33123  
 33124  	var i int32
 33125  	var z uintptr
 33126  	if argc != 5 {
 33127  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33128  			ts+15314, 0))
 33129  		return TCL_ERROR
 33130  	}
 33131  	for i = 2; i < 5; i++ {
 33132  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33133  			return TCL_ERROR
 33134  		}
 33135  	}
 33136  	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))))
 33137  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33138  	sqlite3.Xsqlite3_free(tls, z)
 33139  	return TCL_OK
 33140  }
 33141  
 33142  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33143  	bp := tls.Alloc(112)
 33144  	defer tls.Free(112)
 33145  
 33146  	var i int32
 33147  
 33148  	var z uintptr
 33149  	if argc != 5 {
 33150  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33151  			ts+15314, 0))
 33152  		return TCL_ERROR
 33153  	}
 33154  	for i = 2; i < 5; i++ {
 33155  		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 {
 33156  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 33157  			return TCL_ERROR
 33158  		}
 33159  	}
 33160  	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))))
 33161  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33162  	sqlite3.Xsqlite3_free(tls, z)
 33163  	return TCL_OK
 33164  }
 33165  
 33166  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33167  	bp := tls.Alloc(112)
 33168  	defer tls.Free(112)
 33169  
 33170  	var i int32
 33171  
 33172  	var z uintptr
 33173  	if argc != 5 {
 33174  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33175  			ts+15314, 0))
 33176  		return TCL_ERROR
 33177  	}
 33178  	for i = 2; i < 5; i++ {
 33179  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33180  			return TCL_ERROR
 33181  		}
 33182  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) = int64(*(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4)))
 33183  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) &= int64(uint64(1)<<(uint64(unsafe.Sizeof(int32(0)))*uint64(8)) - uint64(1))
 33184  	}
 33185  	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))))
 33186  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33187  	sqlite3.Xsqlite3_free(tls, z)
 33188  	return TCL_OK
 33189  }
 33190  
 33191  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33192  	bp := tls.Alloc(84)
 33193  	defer tls.Free(84)
 33194  
 33195  	var i int32
 33196  	var z uintptr
 33197  	if argc < 4 || argc > 5 {
 33198  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33199  			ts+15374, 0))
 33200  		return TCL_ERROR
 33201  	}
 33202  	for i = 2; i < 4; i++ {
 33203  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33204  			return TCL_ERROR
 33205  		}
 33206  	}
 33207  	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 {
 33208  		if argc > 4 {
 33209  			return *(*uintptr)(unsafe.Pointer(argv + 4*8))
 33210  		}
 33211  		return uintptr(0)
 33212  	}()))
 33213  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33214  	sqlite3.Xsqlite3_free(tls, z)
 33215  	return TCL_OK
 33216  }
 33217  
 33218  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33219  	bp := tls.Alloc(104)
 33220  	defer tls.Free(104)
 33221  
 33222  	var i int32
 33223  
 33224  	var z uintptr
 33225  	if argc < 5 || argc > 6 {
 33226  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33227  			ts+15400, 0))
 33228  		return TCL_ERROR
 33229  	}
 33230  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+88) != 0 {
 33231  		return TCL_ERROR
 33232  	}
 33233  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 33234  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 33235  		return TCL_ERROR
 33236  	}
 33237  	for i = 3; i < 5; i++ {
 33238  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+92+uintptr(i-3)*4) != 0 {
 33239  			return TCL_ERROR
 33240  		}
 33241  	}
 33242  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 33243  	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 {
 33244  		if argc > 4 {
 33245  			return *(*uintptr)(unsafe.Pointer(argv + 5*8))
 33246  		}
 33247  		return uintptr(0)
 33248  	}()))
 33249  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33250  	sqlite3.Xsqlite3_free(tls, z)
 33251  	return TCL_OK
 33252  }
 33253  
 33254  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33255  	bp := tls.Alloc(96)
 33256  	defer tls.Free(96)
 33257  
 33258  	var i int32
 33259  
 33260  	var z uintptr
 33261  	if argc != 5 {
 33262  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33263  			ts+15453, 0))
 33264  		return TCL_ERROR
 33265  	}
 33266  	for i = 2; i < 4; i++ {
 33267  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 33268  			return TCL_ERROR
 33269  		}
 33270  	}
 33271  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+88) != 0 {
 33272  		return TCL_ERROR
 33273  	}
 33274  	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))))
 33275  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33276  	sqlite3.Xsqlite3_free(tls, z)
 33277  	return TCL_OK
 33278  }
 33279  
 33280  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33281  	bp := tls.Alloc(72)
 33282  	defer tls.Free(72)
 33283  
 33284  	var i int32
 33285  
 33286  	var z uintptr
 33287  	if argc != 4 {
 33288  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33289  			ts+15477, 0))
 33290  		return TCL_ERROR
 33291  	}
 33292  	for i = 2; i < 4; i++ {
 33293  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+56+uintptr(i-2)*8) != 0 {
 33294  			return TCL_ERROR
 33295  		}
 33296  	}
 33297  	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))))
 33298  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33299  	sqlite3.Xsqlite3_free(tls, z)
 33300  	return TCL_OK
 33301  }
 33302  
 33303  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33304  	bp := tls.Alloc(56)
 33305  	defer tls.Free(56)
 33306  
 33307  	var z uintptr
 33308  	if argc != 3 {
 33309  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33310  			ts+15500, 0))
 33311  		return TCL_ERROR
 33312  	}
 33313  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 33314  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33315  	sqlite3.Xsqlite3_free(tls, z)
 33316  	return TCL_OK
 33317  }
 33318  
 33319  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33320  	bp := tls.Alloc(112)
 33321  	defer tls.Free(112)
 33322  
 33323  	var z uintptr
 33324  
 33325  	if argc != 3 {
 33326  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33327  			ts+15500, 0))
 33328  		return TCL_ERROR
 33329  	}
 33330  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 33331  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 33332  		return TCL_ERROR
 33333  	}
 33334  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 33335  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 33336  	libc.Xmemcpy(tls, bp+96, bp+104, uint64(unsafe.Sizeof(float64(0))))
 33337  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 33338  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33339  	sqlite3.Xsqlite3_free(tls, z)
 33340  	return TCL_OK
 33341  }
 33342  
 33343  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33344  	bp := tls.Alloc(4)
 33345  	defer tls.Free(4)
 33346  
 33347  	var rc int32
 33348  
 33349  	var ret int32 = 0
 33350  
 33351  	if objc != 2 && objc != 1 {
 33352  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 33353  		return TCL_ERROR
 33354  	}
 33355  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 33356  
 33357  	if objc == 2 {
 33358  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 33359  			return TCL_ERROR
 33360  		}
 33361  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 33362  		if rc != SQLITE_OK {
 33363  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 33364  			return TCL_ERROR
 33365  		}
 33366  	}
 33367  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(ret != 0)))
 33368  	return TCL_OK
 33369  }
 33370  
 33371  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33372  	bp := tls.Alloc(12)
 33373  	defer tls.Free(12)
 33374  
 33375  	if objc != 3 {
 33376  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 33377  		return TCL_ERROR
 33378  	}
 33379  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33380  		return TCL_ERROR
 33381  	}
 33382  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33383  		return TCL_ERROR
 33384  	}
 33385  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 33386  	return TCL_OK
 33387  }
 33388  
 33389  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33390  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 33391  	return TCL_OK
 33392  }
 33393  
 33394  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33395  	bp := tls.Alloc(52)
 33396  	defer tls.Free(52)
 33397  
 33398  	var zDb uintptr
 33399  	var zTbl uintptr
 33400  	var zCol uintptr
 33401  	var rc int32
 33402  	var pRet uintptr
 33403  
 33404  	if objc != 5 && objc != 4 {
 33405  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 33406  		return TCL_ERROR
 33407  	}
 33408  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33409  		return TCL_ERROR
 33410  	}
 33411  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33412  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33413  	if objc == 5 {
 33414  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 33415  	} else {
 33416  		zCol = uintptr(0)
 33417  	}
 33418  
 33419  	if libc.Xstrlen(tls, zDb) == uint64(0) {
 33420  		zDb = uintptr(0)
 33421  	}
 33422  
 33423  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 33424  		bp+24, bp+32, bp+40, bp+44, bp+48)
 33425  
 33426  	if rc != SQLITE_OK {
 33427  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 33428  		return TCL_ERROR
 33429  	}
 33430  
 33431  	pRet = tcl.XTcl_NewObj(tls)
 33432  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 33433  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), -1))
 33434  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 33435  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 44))))
 33436  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 48))))
 33437  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 33438  
 33439  	return TCL_OK
 33440  }
 33441  
 33442  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 33443  	bp := tls.Alloc(8)
 33444  	defer tls.Free(8)
 33445  
 33446  	var z uintptr
 33447  
 33448  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 33449  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 33450  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 33451  	} else {
 33452  		var channel Tcl_Channel
 33453  		var instanceData ClientData
 33454  
 33455  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 33456  		if !(channel != 0) {
 33457  			return TCL_ERROR
 33458  		}
 33459  
 33460  		tcl.XTcl_Flush(tls, channel)
 33461  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 33462  
 33463  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 33464  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 33465  	}
 33466  
 33467  	return TCL_OK
 33468  }
 33469  
 33470  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33471  	bp := tls.Alloc(16)
 33472  	defer tls.Free(16)
 33473  
 33474  	var rc int32
 33475  
 33476  	if objc != 3 {
 33477  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 33478  		return TCL_ERROR
 33479  	}
 33480  
 33481  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 33482  		return TCL_ERROR
 33483  	}
 33484  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33485  		return TCL_ERROR
 33486  	}
 33487  
 33488  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 33489  	if rc != SQLITE_OK {
 33490  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 33491  	}
 33492  
 33493  	return func() int32 {
 33494  		if rc == SQLITE_OK {
 33495  			return TCL_OK
 33496  		}
 33497  		return TCL_ERROR
 33498  	}()
 33499  }
 33500  
 33501  type TestCollationX1 = struct {
 33502  	Finterp uintptr
 33503  	FpCmp   uintptr
 33504  	FpDel   uintptr
 33505  }
 33506  
 33507  type TestCollationX = TestCollationX1
 33508  
 33509  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 33510  	var p uintptr = pCtx
 33511  
 33512  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 33513  	if rc != TCL_OK {
 33514  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33515  	}
 33516  
 33517  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33518  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpCmp
 33519  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33520  			tcl.XTclFreeObj(tls, _objPtr)
 33521  		}
 33522  	}
 33523  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33524  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpDel
 33525  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33526  			tcl.XTclFreeObj(tls, _objPtr)
 33527  		}
 33528  	}
 33529  	sqlite3.Xsqlite3_free(tls, p)
 33530  }
 33531  
 33532  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 33533  	bp := tls.Alloc(4)
 33534  	defer tls.Free(4)
 33535  
 33536  	var p uintptr = pCtx
 33537  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 33538  	*(*int32)(unsafe.Pointer(bp)) = 0
 33539  
 33540  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 33541  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 33542  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 33543  
 33544  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 33545  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 33546  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33547  	}
 33548  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33549  		var _objPtr uintptr = pScript
 33550  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33551  			tcl.XTclFreeObj(tls, _objPtr)
 33552  		}
 33553  	}
 33554  
 33555  	return *(*int32)(unsafe.Pointer(bp))
 33556  }
 33557  
 33558  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33559  	bp := tls.Alloc(24)
 33560  	defer tls.Free(24)
 33561  
 33562  	var p uintptr
 33563  
 33564  	var rc int32
 33565  
 33566  	if objc != 5 {
 33567  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 33568  		return TCL_ERROR
 33569  	}
 33570  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33571  		return TCL_ERROR
 33572  	}
 33573  
 33574  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 33575  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 33576  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 33577  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 33578  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 33579  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 33580  
 33581  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 16,
 33582  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33583  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33584  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33585  	if rc != SQLITE_MISUSE {
 33586  		tcl.XTcl_AppendResult(tls, interp,
 33587  			libc.VaList(bp, ts+15663, uintptr(0)))
 33588  		return TCL_ERROR
 33589  	}
 33590  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), SQLITE_UTF8,
 33591  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33592  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33593  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33594  	return TCL_OK
 33595  }
 33596  
 33597  type CreateFunctionV21 = struct {
 33598  	Finterp   uintptr
 33599  	FpFunc    uintptr
 33600  	FpStep    uintptr
 33601  	FpFinal   uintptr
 33602  	FpDestroy uintptr
 33603  }
 33604  
 33605  type CreateFunctionV2 = CreateFunctionV21
 33606  
 33607  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33608  }
 33609  
 33610  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33611  }
 33612  
 33613  func cf2Final(tls *libc.TLS, ctx uintptr) {
 33614  }
 33615  
 33616  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 33617  	var p uintptr = pUser
 33618  
 33619  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33620  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 33621  		if rc != TCL_OK {
 33622  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 33623  		}
 33624  	}
 33625  
 33626  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33627  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33628  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc
 33629  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33630  				tcl.XTclFreeObj(tls, _objPtr)
 33631  			}
 33632  		}
 33633  	}
 33634  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33635  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33636  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep
 33637  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33638  				tcl.XTclFreeObj(tls, _objPtr)
 33639  			}
 33640  		}
 33641  	}
 33642  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33643  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 33644  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal
 33645  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33646  				tcl.XTclFreeObj(tls, _objPtr)
 33647  			}
 33648  		}
 33649  	}
 33650  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33651  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 33652  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy
 33653  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33654  				tcl.XTclFreeObj(tls, _objPtr)
 33655  			}
 33656  		}
 33657  	}
 33658  	sqlite3.Xsqlite3_free(tls, p)
 33659  }
 33660  
 33661  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33662  	bp := tls.Alloc(180)
 33663  	defer tls.Free(180)
 33664  
 33665  	var zFunc uintptr
 33666  
 33667  	var p uintptr
 33668  	var i int32
 33669  	var rc int32
 33670  
 33671  	*(*[6]EncTable)(unsafe.Pointer(bp + 32)) = [6]EncTable{
 33672  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 33673  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 33674  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 33675  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 33676  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 33677  		{FzEnc: ts + 14193},
 33678  	}
 33679  
 33680  	if objc < 5 || objc%2 == 0 {
 33681  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 33682  		return TCL_ERROR
 33683  	}
 33684  
 33685  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33686  		return TCL_ERROR
 33687  	}
 33688  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33689  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 33690  		return TCL_ERROR
 33691  	}
 33692  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+32, int32(unsafe.Sizeof(EncTable{})),
 33693  		ts+15784, 0, bp+128) != 0 {
 33694  		return TCL_ERROR
 33695  	}
 33696  	*(*int32)(unsafe.Pointer(bp + 128)) = (*EncTable)(unsafe.Pointer(bp + 32 + uintptr(*(*int32)(unsafe.Pointer(bp + 128)))*16)).Fenc
 33697  
 33698  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 33699  
 33700  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CreateFunctionV2{})))
 33701  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 33702  
 33703  	for i = 5; i < objc; i = i + 2 {
 33704  		*(*[5]uintptr)(unsafe.Pointer(bp + 136)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 33705  		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 {
 33706  			sqlite3.Xsqlite3_free(tls, p)
 33707  			return TCL_ERROR
 33708  		}
 33709  
 33710  		switch *(*int32)(unsafe.Pointer(bp + 176)) {
 33711  		case 0:
 33712  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33713  			break
 33714  		case 1:
 33715  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33716  			break
 33717  		case 2:
 33718  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33719  			break
 33720  		case 3:
 33721  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33722  			break
 33723  		}
 33724  	}
 33725  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33726  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 33727  	}
 33728  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33729  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 33730  	}
 33731  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33732  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 33733  	}
 33734  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33735  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 33736  	}
 33737  
 33738  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33739  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 33740  	}
 33741  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33742  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 33743  	}
 33744  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33745  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 33746  	}
 33747  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33748  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 33749  	}
 33750  
 33751  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 128)), p,
 33752  		func() uintptr {
 33753  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33754  				return *(*uintptr)(unsafe.Pointer(&struct {
 33755  					f func(*libc.TLS, uintptr, int32, uintptr)
 33756  				}{cf2Func}))
 33757  			}
 33758  			return uintptr(0)
 33759  		}(),
 33760  		func() uintptr {
 33761  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33762  				return *(*uintptr)(unsafe.Pointer(&struct {
 33763  					f func(*libc.TLS, uintptr, int32, uintptr)
 33764  				}{cf2Step}))
 33765  			}
 33766  			return uintptr(0)
 33767  		}(),
 33768  		func() uintptr {
 33769  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33770  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 33771  			}
 33772  			return uintptr(0)
 33773  		}(),
 33774  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 33775  	if rc != SQLITE_OK {
 33776  		tcl.XTcl_ResetResult(tls, interp)
 33777  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 33778  		return TCL_ERROR
 33779  	}
 33780  	return TCL_OK
 33781  }
 33782  
 33783  type EncTable = struct {
 33784  	FzEnc        uintptr
 33785  	Fenc         int32
 33786  	F__ccgo_pad1 [4]byte
 33787  }
 33788  
 33789  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33790  	bp := tls.Alloc(88)
 33791  	defer tls.Free(88)
 33792  
 33793  	var db uintptr
 33794  	_ = db
 33795  	var rc int32
 33796  	var zDb uintptr
 33797  	var zFile uintptr
 33798  	_ = zFile
 33799  	var zProc uintptr = uintptr(0)
 33800  	_ = zProc
 33801  	var zErr uintptr = uintptr(0)
 33802  
 33803  	if objc != 4 && objc != 3 {
 33804  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 33805  		return TCL_ERROR
 33806  	}
 33807  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33808  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33809  	if objc == 4 {
 33810  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33811  	}
 33812  
 33813  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 33814  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33815  		return TCL_ERROR
 33816  	}
 33817  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 33818  
 33819  	rc = SQLITE_ERROR
 33820  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 33821  	_ = zProc
 33822  	_ = zFile
 33823  	if rc != SQLITE_OK {
 33824  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 33825  			if zErr != 0 {
 33826  				return zErr
 33827  			}
 33828  			return ts + 584
 33829  		}(), uintptr(1))
 33830  		rc = TCL_ERROR
 33831  	} else {
 33832  		rc = TCL_OK
 33833  	}
 33834  	sqlite3.Xsqlite3_free(tls, zErr)
 33835  
 33836  	return rc
 33837  }
 33838  
 33839  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33840  	bp := tls.Alloc(100)
 33841  	defer tls.Free(100)
 33842  
 33843  	var db uintptr
 33844  	_ = db
 33845  	var zDb uintptr
 33846  
 33847  	if objc != 3 {
 33848  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 33849  		return TCL_ERROR
 33850  	}
 33851  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33852  
 33853  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 33854  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33855  		return TCL_ERROR
 33856  	}
 33857  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 33858  
 33859  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+96) != 0 {
 33860  		return TCL_ERROR
 33861  	}
 33862  
 33863  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 33864  	return TCL_ERROR
 33865  }
 33866  
 33867  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33868  	libc.Xexit(tls, 255)
 33869  
 33870  	return TCL_OK
 33871  }
 33872  
 33873  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33874  	var zArg0 uintptr
 33875  __1:
 33876  	if !(argc >= 2) {
 33877  		goto __2
 33878  	}
 33879  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33880  	if !(zArg0 != 0) {
 33881  		goto __3
 33882  	}
 33883  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 33884  		goto __5
 33885  	}
 33886  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33887  	goto __6
 33888  __5:
 33889  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 33890  		goto __7
 33891  	}
 33892  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33893  	goto __8
 33894  __7:
 33895  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 33896  		goto __9
 33897  	}
 33898  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))), -1,
 33899  		libc.UintptrFromInt32(-1))
 33900  	goto __10
 33901  __9:
 33902  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 33903  		goto __11
 33904  	}
 33905  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33906  	goto __12
 33907  __11:
 33908  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 33909  		goto __13
 33910  	}
 33911  	sqlite3.Xsqlite3_result_null(tls, context)
 33912  	goto __14
 33913  __13:
 33914  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 33915  		goto __15
 33916  	}
 33917  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))*8)))
 33918  	goto __16
 33919  __15:
 33920  	goto error_out
 33921  __16:
 33922  	;
 33923  __14:
 33924  	;
 33925  __12:
 33926  	;
 33927  __10:
 33928  	;
 33929  __8:
 33930  	;
 33931  __6:
 33932  	;
 33933  	goto __4
 33934  __3:
 33935  	goto error_out
 33936  __4:
 33937  	;
 33938  	argc = argc - 2
 33939  	argv += 8 * uintptr(2)
 33940  	goto __1
 33941  __2:
 33942  	;
 33943  	return
 33944  
 33945  error_out:
 33946  	sqlite3.Xsqlite3_result_error(tls, context,
 33947  		ts+15915, -1)
 33948  }
 33949  
 33950  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33951  	bp := tls.Alloc(56)
 33952  	defer tls.Free(56)
 33953  
 33954  	var rc int32
 33955  	if argc != 3 {
 33956  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33957  			ts+15983, 0))
 33958  		return TCL_ERROR
 33959  	}
 33960  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 33961  		return TCL_ERROR
 33962  	}
 33963  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0),
 33964  		*(*uintptr)(unsafe.Pointer(&struct {
 33965  			f func(*libc.TLS, uintptr, int32, uintptr)
 33966  		}{testFunc})), uintptr(0), uintptr(0))
 33967  	if rc != 0 {
 33968  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33969  		return TCL_ERROR
 33970  	}
 33971  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 33972  		return TCL_ERROR
 33973  	}
 33974  	return TCL_OK
 33975  }
 33976  
 33977  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33978  	bp := tls.Alloc(40)
 33979  	defer tls.Free(40)
 33980  
 33981  	var rc int32
 33982  	var db uintptr = uintptr(0)
 33983  
 33984  	if objc != 2 {
 33985  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33986  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33987  		return TCL_ERROR
 33988  	}
 33989  
 33990  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33991  		return TCL_ERROR
 33992  	}
 33993  
 33994  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 33995  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33996  	}
 33997  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33998  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33999  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 34000  		return TCL_ERROR
 34001  	}
 34002  	return TCL_OK
 34003  }
 34004  
 34005  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34006  	bp := tls.Alloc(16)
 34007  	defer tls.Free(16)
 34008  
 34009  	var iValue int32
 34010  	var i int32
 34011  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 34012  
 34013  	var zOpName uintptr
 34014  
 34015  	if objc != 4 {
 34016  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 34017  		return TCL_ERROR
 34018  	}
 34019  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34020  		return TCL_ERROR
 34021  	}
 34022  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34023  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 34024  		FzName       uintptr
 34025  		Fop          int32
 34026  		F__ccgo_pad1 [4]byte
 34027  	}{}))); i++ {
 34028  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 34029  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp[i].Fop
 34030  			break
 34031  		}
 34032  	}
 34033  	if i >= int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 34034  		FzName       uintptr
 34035  		Fop          int32
 34036  		F__ccgo_pad1 [4]byte
 34037  	}{}))) {
 34038  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 34039  			return TCL_ERROR
 34040  		}
 34041  	}
 34042  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 34043  		return TCL_ERROR
 34044  	}
 34045  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 34046  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 34047  	return TCL_OK
 34048  }
 34049  
 34050  var aOp = [7]struct {
 34051  	FzName       uintptr
 34052  	Fop          int32
 34053  	F__ccgo_pad1 [4]byte
 34054  }{
 34055  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 34056  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 34057  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 34058  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 34059  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 34060  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 34061  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 34062  }
 34063  
 34064  func test_config_sorterref(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34065  	bp := tls.Alloc(12)
 34066  	defer tls.Free(12)
 34067  
 34068  	if objc != 2 {
 34069  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 34070  		return TCL_ERROR
 34071  	}
 34072  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 34073  		return TCL_ERROR
 34074  	}
 34075  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 34076  	return TCL_OK
 34077  }
 34078  
 34079  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34080  	bp := tls.Alloc(8)
 34081  	defer tls.Free(8)
 34082  
 34083  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 34084  	if objc != 1 {
 34085  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 34086  		return TCL_ERROR
 34087  	}
 34088  	(*struct {
 34089  		f func(*libc.TLS, uintptr, uintptr) int32
 34090  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 34091  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 34092  	return TCL_OK
 34093  }
 34094  
 34095  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34096  	bp := tls.Alloc(116)
 34097  	defer tls.Free(116)
 34098  
 34099  	var rc int32
 34100  
 34101  	var zName uintptr
 34102  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 34103  
 34104  	if objc != 3 {
 34105  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34106  		return TCL_ERROR
 34107  	}
 34108  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34109  		return TCL_ERROR
 34110  	}
 34111  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34112  
 34113  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 34114  	if rc != SQLITE_OK {
 34115  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34116  		return TCL_ERROR
 34117  	} else {
 34118  		if sqlite3TestMakePointerStr(tls, interp, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8))) != 0 {
 34119  			return TCL_ERROR
 34120  		}
 34121  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 34122  	}
 34123  	return TCL_OK
 34124  }
 34125  
 34126  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34127  	bp := tls.Alloc(8)
 34128  	defer tls.Free(8)
 34129  
 34130  	var rc int32
 34131  
 34132  	var zName uintptr
 34133  
 34134  	if objc != 3 {
 34135  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34136  		return TCL_ERROR
 34137  	}
 34138  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34139  		return TCL_ERROR
 34140  	}
 34141  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34142  
 34143  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 34144  	if rc != SQLITE_OK {
 34145  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34146  		return TCL_ERROR
 34147  	} else {
 34148  		tcl.XTcl_ResetResult(tls, interp)
 34149  	}
 34150  	return TCL_OK
 34151  }
 34152  
 34153  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34154  	bp := tls.Alloc(8)
 34155  	defer tls.Free(8)
 34156  
 34157  	var rc int32
 34158  
 34159  	var zName uintptr
 34160  	var pSnapshot uintptr
 34161  
 34162  	if objc != 4 {
 34163  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 34164  		return TCL_ERROR
 34165  	}
 34166  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34167  		return TCL_ERROR
 34168  	}
 34169  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34170  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))
 34171  
 34172  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 34173  	if rc != SQLITE_OK {
 34174  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34175  		return TCL_ERROR
 34176  	} else {
 34177  		tcl.XTcl_ResetResult(tls, interp)
 34178  	}
 34179  	return TCL_OK
 34180  }
 34181  
 34182  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34183  	var pSnapshot uintptr
 34184  	if objc != 2 {
 34185  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 34186  		return TCL_ERROR
 34187  	}
 34188  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 34189  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 34190  	return TCL_OK
 34191  }
 34192  
 34193  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34194  	var res int32
 34195  	var p1 uintptr
 34196  	var p2 uintptr
 34197  	if objc != 3 {
 34198  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34199  		return TCL_ERROR
 34200  	}
 34201  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 34202  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 34203  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34204  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34205  	return TCL_OK
 34206  }
 34207  
 34208  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34209  	bp := tls.Alloc(16)
 34210  	defer tls.Free(16)
 34211  
 34212  	var rc int32
 34213  
 34214  	var zName uintptr
 34215  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 34216  
 34217  	if objc != 3 {
 34218  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34219  		return TCL_ERROR
 34220  	}
 34221  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34222  		return TCL_ERROR
 34223  	}
 34224  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34225  
 34226  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 34227  	if rc != SQLITE_OK {
 34228  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34229  		return TCL_ERROR
 34230  	} else {
 34231  		tcl.XTcl_SetObjResult(tls, interp,
 34232  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 34233  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 34234  	}
 34235  	return TCL_OK
 34236  }
 34237  
 34238  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34239  	bp := tls.Alloc(28)
 34240  	defer tls.Free(28)
 34241  
 34242  	var rc int32
 34243  
 34244  	var zName uintptr
 34245  	var pBlob uintptr
 34246  
 34247  	if objc != 4 {
 34248  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 34249  		return TCL_ERROR
 34250  	}
 34251  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 34252  		return TCL_ERROR
 34253  	}
 34254  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 34255  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24)
 34256  	if uint64(*(*int32)(unsafe.Pointer(bp + 24))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) {
 34257  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34258  		return TCL_ERROR
 34259  	}
 34260  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 34261  	if rc != SQLITE_OK {
 34262  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34263  		return TCL_ERROR
 34264  	}
 34265  	return TCL_OK
 34266  }
 34267  
 34268  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34269  	bp := tls.Alloc(24)
 34270  	defer tls.Free(24)
 34271  
 34272  	var res int32
 34273  	var p1 uintptr
 34274  	var p2 uintptr
 34275  
 34276  	if objc != 3 {
 34277  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34278  		return TCL_ERROR
 34279  	}
 34280  
 34281  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 34282  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20)
 34283  
 34284  	if uint64(*(*int32)(unsafe.Pointer(bp + 16))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 34285  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34286  		return TCL_ERROR
 34287  	}
 34288  
 34289  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34290  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34291  	return TCL_OK
 34292  }
 34293  
 34294  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34295  	var rc int32
 34296  	var zFile uintptr
 34297  	if objc != 2 {
 34298  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 34299  		return TCL_ERROR
 34300  	}
 34301  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34302  	rc = sqlite3_delete_database(tls, zFile)
 34303  
 34304  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34305  	return TCL_OK
 34306  }
 34307  
 34308  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34309  	bp := tls.Alloc(32)
 34310  	defer tls.Free(32)
 34311  
 34312  	var zFile uintptr = uintptr(0)
 34313  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 34314  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 34315  	var bRes int32 = 0
 34316  	var dc int32 = 0
 34317  	var rc int32
 34318  
 34319  	if objc != 2 {
 34320  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 34321  		return TCL_ERROR
 34322  	}
 34323  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34324  
 34325  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 34326  	if rc != SQLITE_OK {
 34327  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 34328  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34329  		return TCL_ERROR
 34330  	}
 34331  
 34332  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 34333  	dc = (*struct {
 34334  		f func(*libc.TLS, uintptr) int32
 34335  	})(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)))
 34336  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 34337  		bRes = 1
 34338  	}
 34339  
 34340  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 34341  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34342  	return TCL_OK
 34343  }
 34344  
 34345  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34346  	bp := tls.Alloc(114)
 34347  	defer tls.Free(114)
 34348  
 34349  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 34350  
 34351  	if objc != 3 {
 34352  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34353  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 34354  		return TCL_ERROR
 34355  	}
 34356  
 34357  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 34358  		return TCL_ERROR
 34359  	}
 34360  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+56) != 0 {
 34361  		return TCL_ERROR
 34362  	}
 34363  	*(*uintptr)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)))
 34364  	if *(*uintptr)(unsafe.Pointer(bp + 56)) != 0 {
 34365  		if sqlite3TestMakePointerStr(tls, interp, bp+64, *(*uintptr)(unsafe.Pointer(bp + 56))) != 0 {
 34366  			return TCL_ERROR
 34367  		}
 34368  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+64, 0))
 34369  	}
 34370  	return TCL_OK
 34371  }
 34372  
 34373  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34374  	bp := tls.Alloc(40)
 34375  	defer tls.Free(40)
 34376  
 34377  	var rc int32
 34378  
 34379  	if objc != 2 {
 34380  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34381  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34382  		return TCL_ERROR
 34383  	}
 34384  
 34385  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34386  		return TCL_ERROR
 34387  	}
 34388  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34389  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34390  	return TCL_OK
 34391  }
 34392  
 34393  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34394  	bp := tls.Alloc(40)
 34395  	defer tls.Free(40)
 34396  
 34397  	var rc int32
 34398  
 34399  	if objc != 2 {
 34400  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34401  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34402  		return TCL_ERROR
 34403  	}
 34404  
 34405  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34406  		return TCL_ERROR
 34407  	}
 34408  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34409  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 34410  	return TCL_OK
 34411  }
 34412  
 34413  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34414  	bp := tls.Alloc(40)
 34415  	defer tls.Free(40)
 34416  
 34417  	var rc int32
 34418  
 34419  	if objc != 2 {
 34420  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34421  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34422  		return TCL_ERROR
 34423  	}
 34424  
 34425  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34426  		return TCL_ERROR
 34427  	}
 34428  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34429  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34430  	return TCL_OK
 34431  }
 34432  
 34433  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34434  	bp := tls.Alloc(40)
 34435  	defer tls.Free(40)
 34436  
 34437  	if objc != 2 {
 34438  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34439  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34440  		return TCL_ERROR
 34441  	}
 34442  
 34443  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34444  		return TCL_ERROR
 34445  	}
 34446  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34447  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 200))&0x20>>5) != 0)))
 34448  	return TCL_OK
 34449  }
 34450  
 34451  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34452  	bp := tls.Alloc(40)
 34453  	defer tls.Free(40)
 34454  
 34455  	var rc int32
 34456  
 34457  	if objc != 2 {
 34458  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34459  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34460  		return TCL_ERROR
 34461  	}
 34462  
 34463  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34464  		return TCL_ERROR
 34465  	}
 34466  
 34467  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34468  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34469  		return TCL_ERROR
 34470  	}
 34471  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34472  
 34473  	return TCL_OK
 34474  }
 34475  
 34476  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34477  	bp := tls.Alloc(40)
 34478  	defer tls.Free(40)
 34479  
 34480  	if objc != 2 {
 34481  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34482  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34483  		return TCL_ERROR
 34484  	}
 34485  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34486  		return TCL_ERROR
 34487  	}
 34488  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) != 0)))
 34489  	return TCL_OK
 34490  }
 34491  
 34492  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34493  	bp := tls.Alloc(48)
 34494  	defer tls.Free(48)
 34495  
 34496  	if objc != 3 {
 34497  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34498  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 34499  		return TCL_ERROR
 34500  	}
 34501  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34502  		return TCL_ERROR
 34503  	}
 34504  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+40) != 0 {
 34505  		return TCL_ERROR
 34506  	}
 34507  	tcl.XTcl_SetObjResult(tls, interp,
 34508  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))))
 34509  	return TCL_OK
 34510  }
 34511  
 34512  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34513  	bp := tls.Alloc(40)
 34514  	defer tls.Free(40)
 34515  
 34516  	if objc != 2 {
 34517  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34518  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 34519  		return TCL_ERROR
 34520  	}
 34521  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34522  		return TCL_ERROR
 34523  	}
 34524  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 34525  	return TCL_OK
 34526  }
 34527  
 34528  var sqlite_static_bind_value uintptr = uintptr(0)
 34529  var sqlite_static_bind_nbyte int32 = 0
 34530  
 34531  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34532  	bp := tls.Alloc(142)
 34533  	defer tls.Free(142)
 34534  
 34535  	var rc int32
 34536  
 34537  	if argc != 5 {
 34538  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34539  			ts+16340, 0))
 34540  		return TCL_ERROR
 34541  	}
 34542  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 34543  		return TCL_ERROR
 34544  	}
 34545  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+88) != 0 {
 34546  		return TCL_ERROR
 34547  	}
 34548  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+7939) == 0 {
 34549  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)))
 34550  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16376) == 0 {
 34551  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value, -1, uintptr(0))
 34552  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16383) == 0 {
 34553  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value,
 34554  			sqlite_static_bind_nbyte, uintptr(0))
 34555  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16397) == 0 {
 34556  		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))
 34557  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16404) == 0 {
 34558  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), ts+16411, 10, uintptr(0))
 34559  	} else {
 34560  		tcl.XTcl_AppendResult(tls, interp,
 34561  			libc.VaList(bp+32, ts+16422, 0))
 34562  		return TCL_ERROR
 34563  	}
 34564  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 34565  		return TCL_ERROR
 34566  	}
 34567  	if rc != 0 {
 34568  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+92, ts+16476, libc.VaList(bp+48, rc))
 34569  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 34570  		return TCL_ERROR
 34571  	}
 34572  	return TCL_OK
 34573  }
 34574  
 34575  var pTestCollateInterp uintptr
 34576  
 34577  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34578  	bp := tls.Alloc(4)
 34579  	defer tls.Free(4)
 34580  
 34581  	var i uintptr = pTestCollateInterp
 34582  	var encin int32 = int32(pCtx)
 34583  
 34584  	var n int32
 34585  	var pVal uintptr
 34586  	var pX uintptr
 34587  
 34588  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 34589  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34590  
 34591  	switch encin {
 34592  	case SQLITE_UTF8:
 34593  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34594  		break
 34595  	case SQLITE_UTF16LE:
 34596  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34597  		break
 34598  	case SQLITE_UTF16BE:
 34599  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34600  		break
 34601  	default:
 34602  	}
 34603  
 34604  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 34605  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34606  	if pVal != 0 {
 34607  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 34608  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34609  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34610  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34611  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 34612  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34613  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34614  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34615  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 34616  	}
 34617  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 34618  
 34619  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 34620  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34621  		var _objPtr uintptr = pX
 34622  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34623  			tcl.XTclFreeObj(tls, _objPtr)
 34624  		}
 34625  	}
 34626  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 34627  	return *(*int32)(unsafe.Pointer(bp))
 34628  }
 34629  
 34630  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34631  	bp := tls.Alloc(60)
 34632  	defer tls.Free(60)
 34633  
 34634  	var pVal uintptr
 34635  	var rc int32
 34636  	var zUtf16 uintptr
 34637  
 34638  	if !(objc != 5) {
 34639  		goto __1
 34640  	}
 34641  	goto bad_args
 34642  __1:
 34643  	;
 34644  	pTestCollateInterp = interp
 34645  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 34646  		goto __2
 34647  	}
 34648  	return TCL_ERROR
 34649  __2:
 34650  	;
 34651  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)) {
 34652  		goto __3
 34653  	}
 34654  	return TCL_ERROR
 34655  __3:
 34656  	;
 34657  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 34658  		uintptr(SQLITE_UTF8), func() uintptr {
 34659  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34660  				return *(*uintptr)(unsafe.Pointer(&struct {
 34661  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34662  				}{test_collate_func}))
 34663  			}
 34664  			return uintptr(0)
 34665  		}())
 34666  	if !(rc == SQLITE_OK) {
 34667  		goto __4
 34668  	}
 34669  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+56)) {
 34670  		goto __5
 34671  	}
 34672  	return TCL_ERROR
 34673  __5:
 34674  	;
 34675  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 34676  		uintptr(SQLITE_UTF16LE), func() uintptr {
 34677  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34678  				return *(*uintptr)(unsafe.Pointer(&struct {
 34679  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34680  				}{test_collate_func}))
 34681  			}
 34682  			return uintptr(0)
 34683  		}())
 34684  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+56)) {
 34685  		goto __6
 34686  	}
 34687  	return TCL_ERROR
 34688  __6:
 34689  	;
 34690  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34691  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 34692  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 34693  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 34694  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 34695  		goto __7
 34696  	}
 34697  	rc = SQLITE_NOMEM
 34698  	goto __8
 34699  __7:
 34700  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 34701  		uintptr(SQLITE_UTF16BE), func() uintptr {
 34702  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34703  				return *(*uintptr)(unsafe.Pointer(&struct {
 34704  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34705  				}{test_collate_func}))
 34706  			}
 34707  			return uintptr(0)
 34708  		}())
 34709  __8:
 34710  	;
 34711  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34712  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34713  __4:
 34714  	;
 34715  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 34716  		goto __9
 34717  	}
 34718  	return TCL_ERROR
 34719  __9:
 34720  	;
 34721  	if !(rc != SQLITE_OK) {
 34722  		goto __10
 34723  	}
 34724  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34725  	return TCL_ERROR
 34726  __10:
 34727  	;
 34728  	return TCL_OK
 34729  
 34730  bad_args:
 34731  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 34732  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34733  	return TCL_ERROR
 34734  }
 34735  
 34736  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34737  	var nCmp int32 = func() int32 {
 34738  		if nA > nB {
 34739  			return nB
 34740  		}
 34741  		return nA
 34742  	}()
 34743  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint64(nCmp))
 34744  	if res == 0 {
 34745  		res = nA - nB
 34746  	}
 34747  	return res
 34748  }
 34749  
 34750  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34751  	bp := tls.Alloc(8)
 34752  	defer tls.Free(8)
 34753  
 34754  	var rc int32
 34755  
 34756  	if !(objc != 2) {
 34757  		goto __1
 34758  	}
 34759  	goto bad_args
 34760  __1:
 34761  	;
 34762  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 34763  		goto __2
 34764  	}
 34765  	return TCL_ERROR
 34766  __2:
 34767  	;
 34768  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 34769  		*(*uintptr)(unsafe.Pointer(&struct {
 34770  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34771  		}{test_utf16bin_collate_func})))
 34772  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34773  		goto __3
 34774  	}
 34775  	return TCL_ERROR
 34776  __3:
 34777  	;
 34778  	return TCL_OK
 34779  
 34780  bad_args:
 34781  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34782  	return TCL_ERROR
 34783  }
 34784  
 34785  var zNeededCollation [200]uint8
 34786  var pzNeededCollation uintptr = 0
 34787  
 34788  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 34789  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 34790  	var i int32
 34791  	var z uintptr
 34792  	z = pName
 34793  	i = 0
 34794  	for ; *(*uint8)(unsafe.Pointer(z)) != 0 || *(*uint8)(unsafe.Pointer(z + 1)) != 0; z++ {
 34795  		if *(*uint8)(unsafe.Pointer(z)) != 0 {
 34796  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*uint8)(unsafe.Pointer(z))
 34797  		}
 34798  	}
 34799  	zNeededCollation[i] = uint8(0)
 34800  	sqlite3.Xsqlite3_create_collation(tls,
 34801  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(intptr_t(enc)), *(*uintptr)(unsafe.Pointer(&struct {
 34802  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34803  		}{test_collate_func})))
 34804  }
 34805  
 34806  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34807  	bp := tls.Alloc(8)
 34808  	defer tls.Free(8)
 34809  
 34810  	var rc int32
 34811  
 34812  	if !(objc != 2) {
 34813  		goto __1
 34814  	}
 34815  	goto bad_args
 34816  __1:
 34817  	;
 34818  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 34819  		goto __2
 34820  	}
 34821  	return TCL_ERROR
 34822  __2:
 34823  	;
 34824  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34825  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 34826  	}{test_collate_needed_cb})))
 34827  	zNeededCollation[0] = uint8(0)
 34828  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34829  		goto __3
 34830  	}
 34831  	return TCL_ERROR
 34832  __3:
 34833  	;
 34834  	return TCL_OK
 34835  
 34836  bad_args:
 34837  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34838  	return TCL_ERROR
 34839  }
 34840  
 34841  var unaligned_string_counter int32 = 0
 34842  
 34843  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 34844  	var rc int32
 34845  	var n int32
 34846  	if nKey1 < nKey2 {
 34847  		n = nKey1
 34848  	} else {
 34849  		n = nKey2
 34850  	}
 34851  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 34852  		unaligned_string_counter++
 34853  	}
 34854  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 34855  		unaligned_string_counter++
 34856  	}
 34857  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint64(n))
 34858  	if rc == 0 {
 34859  		rc = nKey1 - nKey2
 34860  	}
 34861  	return rc
 34862  }
 34863  
 34864  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34865  	bp := tls.Alloc(8)
 34866  	defer tls.Free(8)
 34867  
 34868  	if objc >= 2 {
 34869  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34870  			return TCL_ERROR
 34871  		}
 34872  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 34873  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34874  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34875  			}{alignmentCollFunc})))
 34876  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 34877  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34878  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34879  			}{alignmentCollFunc})))
 34880  	}
 34881  	return SQLITE_OK
 34882  }
 34883  
 34884  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34885  	var interp uintptr
 34886  	var pX uintptr
 34887  	var pVal uintptr
 34888  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34889  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34890  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34891  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34892  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34893  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34894  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34895  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34896  		var _objPtr uintptr = pX
 34897  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34898  			tcl.XTclFreeObj(tls, _objPtr)
 34899  		}
 34900  	}
 34901  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 34902  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34903  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34904  		uint8(SQLITE_UTF8), uintptr(0))
 34905  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 34906  		-1, libc.UintptrFromInt32(-1))
 34907  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34908  }
 34909  
 34910  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34911  	var interp uintptr
 34912  	var pX uintptr
 34913  	var pVal uintptr
 34914  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34915  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34916  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34917  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34918  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34919  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34920  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34921  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34922  		var _objPtr uintptr = pX
 34923  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34924  			tcl.XTclFreeObj(tls, _objPtr)
 34925  		}
 34926  	}
 34927  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34928  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34929  		uint8(SQLITE_UTF8), uintptr(0))
 34930  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 34931  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34932  }
 34933  
 34934  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34935  	var interp uintptr
 34936  	var pX uintptr
 34937  	var pVal uintptr
 34938  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34939  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34940  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34941  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34942  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34943  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34944  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34945  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34946  		var _objPtr uintptr = pX
 34947  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34948  			tcl.XTclFreeObj(tls, _objPtr)
 34949  		}
 34950  	}
 34951  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34952  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34953  		uint8(SQLITE_UTF8), uintptr(0))
 34954  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34955  		-1, libc.UintptrFromInt32(-1))
 34956  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34957  		-1, libc.UintptrFromInt32(-1))
 34958  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34959  		-1, libc.UintptrFromInt32(-1))
 34960  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34961  }
 34962  
 34963  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34964  	bp := tls.Alloc(44)
 34965  	defer tls.Free(44)
 34966  
 34967  	if !(objc != 5) {
 34968  		goto __1
 34969  	}
 34970  	goto bad_args
 34971  __1:
 34972  	;
 34973  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0) {
 34974  		goto __2
 34975  	}
 34976  	return TCL_ERROR
 34977  __2:
 34978  	;
 34979  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40)) {
 34980  		goto __3
 34981  	}
 34982  	return TCL_ERROR
 34983  __3:
 34984  	;
 34985  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34986  		goto __4
 34987  	}
 34988  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 34989  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34990  			f func(*libc.TLS, uintptr, int32, uintptr)
 34991  		}{test_function_utf8})), uintptr(0), uintptr(0))
 34992  __4:
 34993  	;
 34994  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+40)) {
 34995  		goto __5
 34996  	}
 34997  	return TCL_ERROR
 34998  __5:
 34999  	;
 35000  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 35001  		goto __6
 35002  	}
 35003  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 35004  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 35005  			f func(*libc.TLS, uintptr, int32, uintptr)
 35006  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 35007  __6:
 35008  	;
 35009  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40)) {
 35010  		goto __7
 35011  	}
 35012  	return TCL_ERROR
 35013  __7:
 35014  	;
 35015  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 35016  		goto __8
 35017  	}
 35018  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 35019  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 35020  			f func(*libc.TLS, uintptr, int32, uintptr)
 35021  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 35022  __8:
 35023  	;
 35024  	return TCL_OK
 35025  bad_args:
 35026  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35027  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 35028  	return TCL_ERROR
 35029  }
 35030  
 35031  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35032  	var zCode uintptr
 35033  	var i int32
 35034  	if objc != 1 {
 35035  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 35036  	}
 35037  
 35038  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35039  	for i = 0; i < 200; i++ {
 35040  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 35041  			break
 35042  		}
 35043  	}
 35044  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 35045  	return TCL_OK
 35046  }
 35047  
 35048  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 35049  	return TCL_OK
 35050  }
 35051  
 35052  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35053  	bp := tls.Alloc(16)
 35054  	defer tls.Free(16)
 35055  
 35056  	var rc int32
 35057  
 35058  	if objc != 4 {
 35059  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 35060  		return TCL_ERROR
 35061  	}
 35062  
 35063  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35064  		return TCL_ERROR
 35065  	}
 35066  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35067  		return TCL_ERROR
 35068  	}
 35069  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 35070  		return TCL_ERROR
 35071  	}
 35072  
 35073  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 35074  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 35075  		return TCL_ERROR
 35076  	}
 35077  	if rc != SQLITE_OK {
 35078  		return TCL_ERROR
 35079  	}
 35080  
 35081  	return TCL_OK
 35082  }
 35083  
 35084  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35085  	bp := tls.Alloc(40)
 35086  	defer tls.Free(40)
 35087  
 35088  	var rc int32
 35089  
 35090  	if objc != 4 {
 35091  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 35092  		return TCL_ERROR
 35093  	}
 35094  
 35095  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 35096  		return TCL_ERROR
 35097  	}
 35098  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 35099  		return TCL_ERROR
 35100  	}
 35101  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+32) != 0 {
 35102  		return TCL_ERROR
 35103  	}
 35104  
 35105  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 32))))
 35106  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 35107  		return TCL_ERROR
 35108  	}
 35109  	if rc != SQLITE_OK {
 35110  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35111  		return TCL_ERROR
 35112  	}
 35113  
 35114  	return TCL_OK
 35115  }
 35116  
 35117  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35118  	bp := tls.Alloc(48)
 35119  	defer tls.Free(48)
 35120  
 35121  	var rc int32
 35122  
 35123  	if objc != 4 {
 35124  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35125  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35126  		return TCL_ERROR
 35127  	}
 35128  
 35129  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35130  		return TCL_ERROR
 35131  	}
 35132  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35133  		return TCL_ERROR
 35134  	}
 35135  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 35136  		return TCL_ERROR
 35137  	}
 35138  
 35139  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*int32)(unsafe.Pointer(bp + 44)))
 35140  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35141  		return TCL_ERROR
 35142  	}
 35143  	if rc != SQLITE_OK {
 35144  		return TCL_ERROR
 35145  	}
 35146  
 35147  	return TCL_OK
 35148  }
 35149  
 35150  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35151  	var i int32
 35152  
 35153  	sqlite3.Xsqlite3_free(tls, p)
 35154  	p = uintptr(0)
 35155  	if objc > 1 {
 35156  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(objc-1)))
 35157  		if p == uintptr(0) {
 35158  			return TCL_ERROR
 35159  		}
 35160  		for i = 0; i < objc-1; i++ {
 35161  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p+uintptr(i)*4) != 0 {
 35162  				sqlite3.Xsqlite3_free(tls, p)
 35163  				p = uintptr(0)
 35164  				return TCL_ERROR
 35165  			}
 35166  		}
 35167  	}
 35168  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 35169  	return TCL_OK
 35170  }
 35171  
 35172  var p uintptr = uintptr(0)
 35173  
 35174  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35175  	bp := tls.Alloc(8)
 35176  	defer tls.Free(8)
 35177  
 35178  	var i int32
 35179  
 35180  	sqlite3.Xsqlite3_free(tls, p1)
 35181  	p1 = uintptr(0)
 35182  	if objc > 1 {
 35183  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(objc-1)))
 35184  		if p1 == uintptr(0) {
 35185  			return TCL_ERROR
 35186  		}
 35187  		for i = 0; i < objc-1; i++ {
 35188  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), bp) != 0 {
 35189  				sqlite3.Xsqlite3_free(tls, p1)
 35190  				p1 = uintptr(0)
 35191  				return TCL_ERROR
 35192  			}
 35193  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 35194  		}
 35195  	}
 35196  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 35197  	return TCL_OK
 35198  }
 35199  
 35200  var p1 uintptr = uintptr(0)
 35201  
 35202  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35203  	var i int32
 35204  
 35205  	sqlite3.Xsqlite3_free(tls, p2)
 35206  	p2 = uintptr(0)
 35207  	if objc > 1 {
 35208  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(objc-1)))
 35209  		if p2 == uintptr(0) {
 35210  			return TCL_ERROR
 35211  		}
 35212  		for i = 0; i < objc-1; i++ {
 35213  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p2+uintptr(i)*8) != 0 {
 35214  				sqlite3.Xsqlite3_free(tls, p2)
 35215  				p2 = uintptr(0)
 35216  				return TCL_ERROR
 35217  			}
 35218  		}
 35219  	}
 35220  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 35221  	return TCL_OK
 35222  }
 35223  
 35224  var p2 uintptr = uintptr(0)
 35225  
 35226  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35227  	bp := tls.Alloc(8)
 35228  	defer tls.Free(8)
 35229  
 35230  	var i int32
 35231  
 35232  	for i = 0; i < n; i++ {
 35233  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)))
 35234  	}
 35235  	sqlite3.Xsqlite3_free(tls, p3)
 35236  	p3 = uintptr(0)
 35237  	if objc > 1 {
 35238  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(objc-1)))
 35239  		if p3 == uintptr(0) {
 35240  			return TCL_ERROR
 35241  		}
 35242  		for i = 0; i < objc-1; i++ {
 35243  			*(*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)))))
 35244  		}
 35245  	}
 35246  	n = objc - 1
 35247  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 35248  	return TCL_OK
 35249  }
 35250  
 35251  var n int32 = 0
 35252  var p3 uintptr = uintptr(0)
 35253  
 35254  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35255  	bp := tls.Alloc(56)
 35256  	defer tls.Free(56)
 35257  
 35258  	var rc int32
 35259  
 35260  	if objc != 4 {
 35261  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35262  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35263  		return TCL_ERROR
 35264  	}
 35265  
 35266  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35267  		return TCL_ERROR
 35268  	}
 35269  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35270  		return TCL_ERROR
 35271  	}
 35272  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 35273  		return TCL_ERROR
 35274  	}
 35275  
 35276  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 48)))
 35277  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35278  		return TCL_ERROR
 35279  	}
 35280  	if rc != SQLITE_OK {
 35281  		return TCL_ERROR
 35282  	}
 35283  
 35284  	return TCL_OK
 35285  }
 35286  
 35287  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35288  	bp := tls.Alloc(64)
 35289  	defer tls.Free(64)
 35290  
 35291  	*(*float64)(unsafe.Pointer(bp + 48)) = float64(0)
 35292  	var rc int32
 35293  	var zVal uintptr
 35294  	var i int32
 35295  
 35296  	if objc != 4 {
 35297  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35298  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35299  		return TCL_ERROR
 35300  	}
 35301  
 35302  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35303  		return TCL_ERROR
 35304  	}
 35305  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35306  		return TCL_ERROR
 35307  	}
 35308  
 35309  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35310  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 35311  		FzName  uintptr
 35312  		FiUpper uint32
 35313  		FiLower uint32
 35314  	}{})); i++ {
 35315  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 35316  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 35317  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) <<= 32
 35318  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 35319  
 35320  			libc.Xmemcpy(tls, bp+48, bp+56, uint64(8))
 35321  			break
 35322  		}
 35323  	}
 35324  	if uint64(i) >= uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 35325  		FzName  uintptr
 35326  		FiUpper uint32
 35327  		FiLower uint32
 35328  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 35329  		return TCL_ERROR
 35330  	}
 35331  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*float64)(unsafe.Pointer(bp + 48)))
 35332  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35333  		return TCL_ERROR
 35334  	}
 35335  	if rc != SQLITE_OK {
 35336  		return TCL_ERROR
 35337  	}
 35338  
 35339  	return TCL_OK
 35340  }
 35341  
 35342  var aSpecialFp = [10]struct {
 35343  	FzName  uintptr
 35344  	FiUpper uint32
 35345  	FiLower uint32
 35346  }{
 35347  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 35348  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 35349  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 35350  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 35351  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 35352  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 35353  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 35354  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 35355  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 35356  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 35357  }
 35358  
 35359  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35360  	bp := tls.Alloc(44)
 35361  	defer tls.Free(44)
 35362  
 35363  	var rc int32
 35364  
 35365  	if objc != 3 {
 35366  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35367  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 35368  		return TCL_ERROR
 35369  	}
 35370  
 35371  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35372  		return TCL_ERROR
 35373  	}
 35374  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35375  		return TCL_ERROR
 35376  	}
 35377  
 35378  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 35379  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35380  		return TCL_ERROR
 35381  	}
 35382  	if rc != SQLITE_OK {
 35383  		return TCL_ERROR
 35384  	}
 35385  
 35386  	return TCL_OK
 35387  }
 35388  
 35389  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35390  	bp := tls.Alloc(84)
 35391  	defer tls.Free(84)
 35392  
 35393  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 35394  
 35395  	var value uintptr
 35396  	var rc int32
 35397  	var toFree uintptr = uintptr(0)
 35398  
 35399  	if objc != 5 {
 35400  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35401  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35402  		return TCL_ERROR
 35403  	}
 35404  
 35405  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 35406  		return TCL_ERROR
 35407  	}
 35408  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 35409  		return TCL_ERROR
 35410  	}
 35411  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 35412  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 35413  		return TCL_ERROR
 35414  	}
 35415  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 {
 35416  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+1))
 35417  		if toFree == uintptr(0) {
 35418  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35419  			return TCL_ERROR
 35420  		}
 35421  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 35422  		*(*uint8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 76))))) = uint8(0)
 35423  		value = toFree
 35424  	}
 35425  	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))
 35426  	libc.Xfree(tls, toFree)
 35427  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35428  		return TCL_ERROR
 35429  	}
 35430  	if rc != SQLITE_OK {
 35431  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 35432  		return TCL_ERROR
 35433  	}
 35434  
 35435  	return TCL_OK
 35436  }
 35437  
 35438  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35439  	bp := tls.Alloc(84)
 35440  	defer tls.Free(84)
 35441  
 35442  	var value uintptr
 35443  	var toFree uintptr = uintptr(0)
 35444  	var rc int32
 35445  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 35446  
 35447  	var xDel uintptr = func() uintptr {
 35448  		if objc == 6 {
 35449  			return uintptr(0)
 35450  		}
 35451  		return libc.UintptrFromInt32(-1)
 35452  	}()
 35453  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*8))
 35454  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8))
 35455  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))
 35456  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 35457  
 35458  	if objc != 5 && objc != 6 {
 35459  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35460  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35461  		return TCL_ERROR
 35462  	}
 35463  
 35464  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 35465  		return TCL_ERROR
 35466  	}
 35467  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+72) != 0 {
 35468  		return TCL_ERROR
 35469  	}
 35470  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+76)
 35471  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+80) != 0 {
 35472  		return TCL_ERROR
 35473  	}
 35474  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 35475  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+3))
 35476  		if toFree == uintptr(0) {
 35477  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35478  			return TCL_ERROR
 35479  		}
 35480  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 35481  		libc.Xmemset(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0, uint64(3))
 35482  		value = toFree
 35483  	}
 35484  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDel)
 35485  	libc.Xfree(tls, toFree)
 35486  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35487  		return TCL_ERROR
 35488  	}
 35489  	if rc != SQLITE_OK {
 35490  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35491  		return TCL_ERROR
 35492  	}
 35493  
 35494  	return TCL_OK
 35495  }
 35496  
 35497  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35498  	bp := tls.Alloc(284)
 35499  	defer tls.Free(284)
 35500  
 35501  	var value uintptr
 35502  	var rc int32
 35503  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 35504  
 35505  	if objc != 5 && objc != 6 {
 35506  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35507  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 35508  		return TCL_ERROR
 35509  	}
 35510  
 35511  	if objc == 6 {
 35512  		xDestructor = uintptr(0)
 35513  		objv += 8
 35514  	}
 35515  
 35516  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 35517  		return TCL_ERROR
 35518  	}
 35519  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 35520  		return TCL_ERROR
 35521  	}
 35522  
 35523  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 35524  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 35525  		return TCL_ERROR
 35526  	}
 35527  
 35528  	if *(*int32)(unsafe.Pointer(bp + 80)) > *(*int32)(unsafe.Pointer(bp + 76)) {
 35529  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+84,
 35530  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 76))))
 35531  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+84, uintptr(0)))
 35532  		return TCL_ERROR
 35533  	}
 35534  
 35535  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDestructor)
 35536  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35537  		return TCL_ERROR
 35538  	}
 35539  	if rc != SQLITE_OK {
 35540  		return TCL_ERROR
 35541  	}
 35542  
 35543  	return TCL_OK
 35544  }
 35545  
 35546  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35547  	bp := tls.Alloc(48)
 35548  	defer tls.Free(48)
 35549  
 35550  	var z3 uintptr = uintptr(0)
 35551  	var db uintptr = uintptr(0)
 35552  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 35553  
 35554  	if objc != 5 {
 35555  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 35556  		return TCL_ERROR
 35557  	}
 35558  
 35559  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 35560  		return TCL_ERROR
 35561  	}
 35562  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+32) != 0 {
 35563  		return TCL_ERROR
 35564  	}
 35565  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35566  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+36) != 0 {
 35567  		return TCL_ERROR
 35568  	}
 35569  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 35570  
 35571  	if int32(*(*uint8)(unsafe.Pointer(z3))) == 'n' {
 35572  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 35573  	} else if int32(*(*uint8)(unsafe.Pointer(z3))) == 'o' {
 35574  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 35575  	} else {
 35576  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 35577  		return TCL_ERROR
 35578  	}
 35579  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))
 35580  
 35581  	return TCL_OK
 35582  }
 35583  
 35584  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35585  	bp := tls.Alloc(72)
 35586  	defer tls.Free(72)
 35587  
 35588  	var zSql uintptr = uintptr(0)
 35589  	var db uintptr = uintptr(0)
 35590  	var rc int32 = SQLITE_OK
 35591  
 35592  	if objc != 4 {
 35593  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 35594  		return TCL_ERROR
 35595  	}
 35596  
 35597  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35598  		return TCL_ERROR
 35599  	}
 35600  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56) != 0 {
 35601  		return TCL_ERROR
 35602  	}
 35603  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35604  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35605  
 35606  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 35607  	if rc != SQLITE_OK {
 35608  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35609  		return TCL_ERROR
 35610  	}
 35611  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 35612  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 35613  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)), pVal)
 35614  	}
 35615  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 35616  	if rc != SQLITE_OK {
 35617  		tcl.XTcl_AppendResult(tls, interp,
 35618  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35619  		return TCL_ERROR
 35620  	}
 35621  
 35622  	return TCL_OK
 35623  }
 35624  
 35625  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35626  	bp := tls.Alloc(112)
 35627  	defer tls.Free(112)
 35628  
 35629  	var eType int32
 35630  	var nData int32
 35631  	var aData uintptr
 35632  	var isTransient int32
 35633  	var isStatic int32
 35634  
 35635  	var i int32
 35636  	var j int32
 35637  	var rc int32
 35638  	var xDel uintptr
 35639  	var z uintptr
 35640  
 35641  	var a uintptr
 35642  
 35643  	var a1 uintptr
 35644  
 35645  	var a2 uintptr
 35646  	var v3 uintptr
 35647  	var a3 uintptr
 35648  	eType = 0
 35649  	nData = 0
 35650  	aData = uintptr(0)
 35651  	isTransient = 0
 35652  	isStatic = 0
 35653  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 35654  
 35655  	if !(aStaticData != 0) {
 35656  		goto __1
 35657  	}
 35658  
 35659  	if !(eStaticType == 3) {
 35660  		goto __2
 35661  	}
 35662  	i = 0
 35663  __3:
 35664  	if !(i < nStaticData) {
 35665  		goto __5
 35666  	}
 35667  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*8)))
 35668  	goto __4
 35669  __4:
 35670  	i++
 35671  	goto __3
 35672  	goto __5
 35673  __5:
 35674  	;
 35675  __2:
 35676  	;
 35677  	sqlite3.Xsqlite3_free(tls, aStaticData)
 35678  	aStaticData = uintptr(0)
 35679  	nStaticData = 0
 35680  	eStaticType = 0
 35681  __1:
 35682  	;
 35683  	if !(objc == 1) {
 35684  		goto __6
 35685  	}
 35686  	return TCL_OK
 35687  __6:
 35688  	;
 35689  	i = 1
 35690  __7:
 35691  	if !(i < objc && int32(*(*uint8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))))) == '-') {
 35692  		goto __9
 35693  	}
 35694  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 35695  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 35696  		goto __10
 35697  	}
 35698  	isTransient = 1
 35699  	xDel = libc.UintptrFromInt32(-1)
 35700  	goto __11
 35701  __10:
 35702  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 35703  		goto __12
 35704  	}
 35705  	isStatic = 1
 35706  	xDel = uintptr(0)
 35707  	goto __13
 35708  __12:
 35709  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 35710  		goto __14
 35711  	}
 35712  	eType = 0
 35713  	goto __15
 35714  __14:
 35715  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 35716  		goto __16
 35717  	}
 35718  	eType = 1
 35719  	goto __17
 35720  __16:
 35721  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 35722  		goto __18
 35723  	}
 35724  	eType = 2
 35725  	goto __19
 35726  __18:
 35727  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 35728  		goto __20
 35729  	}
 35730  	eType = 3
 35731  	goto __21
 35732  __20:
 35733  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 35734  		goto __22
 35735  	}
 35736  	goto __9
 35737  	goto __23
 35738  __22:
 35739  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 35740  	return TCL_ERROR
 35741  __23:
 35742  	;
 35743  __21:
 35744  	;
 35745  __19:
 35746  	;
 35747  __17:
 35748  	;
 35749  __15:
 35750  	;
 35751  __13:
 35752  	;
 35753  __11:
 35754  	;
 35755  	goto __8
 35756  __8:
 35757  	i++
 35758  	goto __7
 35759  	goto __9
 35760  __9:
 35761  	;
 35762  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 35763  		goto __24
 35764  	}
 35765  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 35766  		uintptr(0)))
 35767  	return TCL_ERROR
 35768  __24:
 35769  	;
 35770  	if !(isStatic != 0 && isTransient != 0) {
 35771  		goto __25
 35772  	}
 35773  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 35774  		uintptr(0)))
 35775  	return TCL_ERROR
 35776  __25:
 35777  	;
 35778  	if !(objc-i < 2) {
 35779  		goto __26
 35780  	}
 35781  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 35782  	return TCL_ERROR
 35783  __26:
 35784  	;
 35785  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8))), bp+80) != 0) {
 35786  		goto __27
 35787  	}
 35788  	return TCL_ERROR
 35789  __27:
 35790  	;
 35791  	i++
 35792  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0) {
 35793  		goto __28
 35794  	}
 35795  	return TCL_ERROR
 35796  __28:
 35797  	;
 35798  	i++
 35799  	nData = objc - i
 35800  	switch eType + 4*libc.Bool32(nData <= 0) {
 35801  	case 0:
 35802  		goto __30
 35803  	case 1:
 35804  		goto __31
 35805  	case 2:
 35806  		goto __32
 35807  	case 3:
 35808  		goto __33
 35809  	case 4:
 35810  		goto __34
 35811  	}
 35812  	goto __29
 35813  __30:
 35814  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nData)))
 35815  	if !(a == uintptr(0)) {
 35816  		goto __35
 35817  	}
 35818  	rc = SQLITE_NOMEM
 35819  	goto carray_bind_done
 35820  __35:
 35821  	;
 35822  	j = 0
 35823  __36:
 35824  	if !(j < nData) {
 35825  		goto __38
 35826  	}
 35827  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+92) != 0) {
 35828  		goto __39
 35829  	}
 35830  	sqlite3.Xsqlite3_free(tls, a)
 35831  	return TCL_ERROR
 35832  __39:
 35833  	;
 35834  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 92))
 35835  	goto __37
 35836  __37:
 35837  	j++
 35838  	goto __36
 35839  	goto __38
 35840  __38:
 35841  	;
 35842  	aData = a
 35843  	goto __29
 35844  
 35845  __31:
 35846  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(nData)))
 35847  	if !(a1 == uintptr(0)) {
 35848  		goto __40
 35849  	}
 35850  	rc = SQLITE_NOMEM
 35851  	goto carray_bind_done
 35852  __40:
 35853  	;
 35854  	j = 0
 35855  __41:
 35856  	if !(j < nData) {
 35857  		goto __43
 35858  	}
 35859  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+96) != 0) {
 35860  		goto __44
 35861  	}
 35862  	sqlite3.Xsqlite3_free(tls, a1)
 35863  	return TCL_ERROR
 35864  __44:
 35865  	;
 35866  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 96))
 35867  	goto __42
 35868  __42:
 35869  	j++
 35870  	goto __41
 35871  	goto __43
 35872  __43:
 35873  	;
 35874  	aData = a1
 35875  	goto __29
 35876  
 35877  __32:
 35878  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(nData)))
 35879  	if !(a2 == uintptr(0)) {
 35880  		goto __45
 35881  	}
 35882  	rc = SQLITE_NOMEM
 35883  	goto carray_bind_done
 35884  __45:
 35885  	;
 35886  	j = 0
 35887  __46:
 35888  	if !(j < nData) {
 35889  		goto __48
 35890  	}
 35891  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+104) != 0) {
 35892  		goto __49
 35893  	}
 35894  	sqlite3.Xsqlite3_free(tls, a2)
 35895  	return TCL_ERROR
 35896  __49:
 35897  	;
 35898  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 104))
 35899  	goto __47
 35900  __47:
 35901  	j++
 35902  	goto __46
 35903  	goto __48
 35904  __48:
 35905  	;
 35906  	aData = a2
 35907  	goto __29
 35908  
 35909  __33:
 35910  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nData)))
 35911  	if !(a3 == uintptr(0)) {
 35912  		goto __50
 35913  	}
 35914  	rc = SQLITE_NOMEM
 35915  	goto carray_bind_done
 35916  __50:
 35917  	;
 35918  	j = 0
 35919  __51:
 35920  	if !(j < nData) {
 35921  		goto __53
 35922  	}
 35923  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)))
 35924  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 35925  	goto __52
 35926  __52:
 35927  	j++
 35928  	goto __51
 35929  	goto __53
 35930  __53:
 35931  	;
 35932  	aData = a3
 35933  	goto __29
 35934  
 35935  __34:
 35936  	aData = ts + 584
 35937  	xDel = uintptr(0)
 35938  	isTransient = 0
 35939  	isStatic = 0
 35940  	goto __29
 35941  
 35942  __29:
 35943  	;
 35944  	if !(isStatic != 0) {
 35945  		goto __54
 35946  	}
 35947  	aStaticData = aData
 35948  	nStaticData = nData
 35949  	eStaticType = eType
 35950  __54:
 35951  	;
 35952  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), aData, nData, eType, xDel)
 35953  	if !(isTransient != 0) {
 35954  		goto __55
 35955  	}
 35956  	if !(eType == 3) {
 35957  		goto __56
 35958  	}
 35959  	i = 0
 35960  __57:
 35961  	if !(i < nData) {
 35962  		goto __59
 35963  	}
 35964  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8)))
 35965  	goto __58
 35966  __58:
 35967  	i++
 35968  	goto __57
 35969  	goto __59
 35970  __59:
 35971  	;
 35972  __56:
 35973  	;
 35974  	sqlite3.Xsqlite3_free(tls, aData)
 35975  __55:
 35976  	;
 35977  carray_bind_done:
 35978  	if !(rc != 0) {
 35979  		goto __60
 35980  	}
 35981  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 35982  	return TCL_ERROR
 35983  __60:
 35984  	;
 35985  	return TCL_OK
 35986  }
 35987  
 35988  var aStaticData uintptr = uintptr(0)
 35989  var nStaticData int32 = 0
 35990  var eStaticType int32 = 0
 35991  
 35992  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35993  	bp := tls.Alloc(8)
 35994  	defer tls.Free(8)
 35995  
 35996  	if objc != 2 {
 35997  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35998  		return TCL_ERROR
 35999  	}
 36000  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36001  		return TCL_ERROR
 36002  	}
 36003  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 36004  	return TCL_OK
 36005  }
 36006  
 36007  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36008  	bp := tls.Alloc(12)
 36009  	defer tls.Free(12)
 36010  
 36011  	if objc != 3 {
 36012  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 36013  		return TCL_ERROR
 36014  	}
 36015  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36016  		return TCL_ERROR
 36017  	}
 36018  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 36019  		return TCL_ERROR
 36020  	}
 36021  	tcl.XTcl_SetObjResult(tls, interp,
 36022  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8))), -1))
 36023  	return TCL_OK
 36024  }
 36025  
 36026  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36027  	bp := tls.Alloc(8)
 36028  	defer tls.Free(8)
 36029  
 36030  	if objc != 3 {
 36031  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 36032  		return TCL_ERROR
 36033  	}
 36034  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36035  		return TCL_ERROR
 36036  	}
 36037  	tcl.XTcl_SetObjResult(tls, interp,
 36038  		tcl.XTcl_NewIntObj(tls,
 36039  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))))
 36040  	return TCL_OK
 36041  }
 36042  
 36043  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36044  	bp := tls.Alloc(8)
 36045  	defer tls.Free(8)
 36046  
 36047  	if objc != 2 {
 36048  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36049  		return TCL_ERROR
 36050  	}
 36051  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36052  		return TCL_ERROR
 36053  	}
 36054  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 36055  	return TCL_OK
 36056  }
 36057  
 36058  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36059  	bp := tls.Alloc(4)
 36060  	defer tls.Free(4)
 36061  
 36062  	if objc != 2 {
 36063  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 36064  		return TCL_ERROR
 36065  	}
 36066  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36067  		return TCL_ERROR
 36068  	}
 36069  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 36070  	return TCL_OK
 36071  }
 36072  
 36073  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36074  	bp := tls.Alloc(56)
 36075  	defer tls.Free(56)
 36076  
 36077  	var rc int32
 36078  
 36079  	if objc != 2 {
 36080  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36081  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36082  		return TCL_ERROR
 36083  	}
 36084  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36085  		return TCL_ERROR
 36086  	}
 36087  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 36088  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36089  	return TCL_OK
 36090  }
 36091  
 36092  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36093  	bp := tls.Alloc(56)
 36094  	defer tls.Free(56)
 36095  
 36096  	var rc int32
 36097  
 36098  	if objc != 2 {
 36099  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36100  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36101  		return TCL_ERROR
 36102  	}
 36103  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36104  		return TCL_ERROR
 36105  	}
 36106  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 36107  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36108  	return TCL_OK
 36109  }
 36110  
 36111  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36112  	bp := tls.Alloc(40)
 36113  	defer tls.Free(40)
 36114  
 36115  	var zErr uintptr
 36116  
 36117  	if objc != 2 {
 36118  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36119  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36120  		return TCL_ERROR
 36121  	}
 36122  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36123  		return TCL_ERROR
 36124  	}
 36125  
 36126  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36127  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 36128  	return TCL_OK
 36129  }
 36130  
 36131  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36132  	bp := tls.Alloc(40)
 36133  	defer tls.Free(40)
 36134  
 36135  	var iByteOffset int32
 36136  
 36137  	if objc != 2 {
 36138  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36139  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36140  		return TCL_ERROR
 36141  	}
 36142  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36143  		return TCL_ERROR
 36144  	}
 36145  
 36146  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36147  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 36148  	return TCL_OK
 36149  }
 36150  
 36151  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36152  	bp := tls.Alloc(40)
 36153  	defer tls.Free(40)
 36154  
 36155  	var zErr uintptr
 36156  	var z uintptr
 36157  	var bytes int32 = 0
 36158  
 36159  	if objc != 2 {
 36160  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36161  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 36162  		return TCL_ERROR
 36163  	}
 36164  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36165  		return TCL_ERROR
 36166  	}
 36167  
 36168  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36169  	if zErr != 0 {
 36170  		z = zErr
 36171  		for bytes = 0; *(*uint8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*uint8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 36172  		}
 36173  	}
 36174  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 36175  	return TCL_OK
 36176  }
 36177  
 36178  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36179  	bp := tls.Alloc(162)
 36180  	defer tls.Free(162)
 36181  
 36182  	var zSql uintptr
 36183  
 36184  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36185  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36186  
 36187  	var rc int32
 36188  
 36189  	if objc != 5 && objc != 4 {
 36190  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36191  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36192  		return TCL_ERROR
 36193  	}
 36194  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36195  		return TCL_ERROR
 36196  	}
 36197  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36198  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36199  		return TCL_ERROR
 36200  	}
 36201  
 36202  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, func() uintptr {
 36203  		if objc >= 5 {
 36204  			return bp + 104
 36205  		}
 36206  		return uintptr(0)
 36207  	}())
 36208  	tcl.XTcl_ResetResult(tls, interp)
 36209  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36210  		return TCL_ERROR
 36211  	}
 36212  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 36213  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36214  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 36215  		}
 36216  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104)))) < *(*int32)(unsafe.Pointer(bp + 88)) {
 36217  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104))))
 36218  		}
 36219  		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)
 36220  	}
 36221  	if rc != SQLITE_OK {
 36222  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36223  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36224  		return TCL_ERROR
 36225  	}
 36226  
 36227  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 36228  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 36229  			return TCL_ERROR
 36230  		}
 36231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36232  	}
 36233  	return TCL_OK
 36234  }
 36235  
 36236  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36237  	bp := tls.Alloc(162)
 36238  	defer tls.Free(162)
 36239  
 36240  	var zSql uintptr
 36241  	var zCopy uintptr = uintptr(0)
 36242  
 36243  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36244  	var pzTail uintptr
 36245  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36246  
 36247  	var rc int32
 36248  
 36249  	if objc != 5 && objc != 4 {
 36250  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36251  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36252  		return TCL_ERROR
 36253  	}
 36254  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36255  		return TCL_ERROR
 36256  	}
 36257  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36258  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36259  		return TCL_ERROR
 36260  	}
 36261  
 36262  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36263  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36264  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36265  	} else {
 36266  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36267  		zCopy = libc.Xmalloc(tls, uint64(n))
 36268  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 36269  	}
 36270  	if objc >= 5 {
 36271  		pzTail = bp + 96
 36272  	} else {
 36273  		pzTail = uintptr(0)
 36274  	}
 36275  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), bp+104, pzTail)
 36276  	if objc >= 5 {
 36277  		*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 36278  	}
 36279  	libc.Xfree(tls, zCopy)
 36280  
 36281  	tcl.XTcl_ResetResult(tls, interp)
 36282  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36283  		return TCL_ERROR
 36284  	}
 36285  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 36286  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36287  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 36288  		}
 36289  		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)
 36290  	}
 36291  	if rc != SQLITE_OK {
 36292  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36293  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36294  		return TCL_ERROR
 36295  	}
 36296  
 36297  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 36298  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 36299  			return TCL_ERROR
 36300  		}
 36301  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36302  	}
 36303  	return TCL_OK
 36304  }
 36305  
 36306  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36307  	bp := tls.Alloc(162)
 36308  	defer tls.Free(162)
 36309  
 36310  	var zSql uintptr
 36311  	var zCopy uintptr = uintptr(0)
 36312  
 36313  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36314  	var pzTail uintptr
 36315  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36316  
 36317  	var rc int32
 36318  
 36319  	if objc != 6 && objc != 5 {
 36320  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36321  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 36322  		return TCL_ERROR
 36323  	}
 36324  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36325  		return TCL_ERROR
 36326  	}
 36327  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36328  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36329  		return TCL_ERROR
 36330  	}
 36331  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+92) != 0 {
 36332  		return TCL_ERROR
 36333  	}
 36334  
 36335  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36336  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36337  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36338  	} else {
 36339  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36340  		zCopy = libc.Xmalloc(tls, uint64(n))
 36341  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 36342  	}
 36343  	if objc >= 6 {
 36344  		pzTail = bp + 96
 36345  	} else {
 36346  		pzTail = uintptr(0)
 36347  	}
 36348  	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)
 36349  	libc.Xfree(tls, zCopy)
 36350  	*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 36351  
 36352  	tcl.XTcl_ResetResult(tls, interp)
 36353  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36354  		return TCL_ERROR
 36355  	}
 36356  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 && objc >= 6 {
 36357  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36358  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 36359  		}
 36360  		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)
 36361  	}
 36362  	if rc != SQLITE_OK {
 36363  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36364  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36365  		return TCL_ERROR
 36366  	}
 36367  
 36368  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 36369  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 36370  			return TCL_ERROR
 36371  		}
 36372  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36373  	}
 36374  	return TCL_OK
 36375  }
 36376  
 36377  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36378  	bp := tls.Alloc(146)
 36379  	defer tls.Free(146)
 36380  
 36381  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 36382  
 36383  	var rc int32
 36384  
 36385  	if objc != 2 {
 36386  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36387  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36388  		return TCL_ERROR
 36389  	}
 36390  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36391  		return TCL_ERROR
 36392  	}
 36393  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+88, uintptr(0))
 36394  
 36395  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36396  		return TCL_ERROR
 36397  	}
 36398  	if rc != SQLITE_OK {
 36399  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 36400  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36401  		return TCL_ERROR
 36402  	}
 36403  
 36404  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 36405  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 36406  			return TCL_ERROR
 36407  		}
 36408  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 36409  	}
 36410  	return TCL_OK
 36411  }
 36412  
 36413  var zSql = *(*[10]uint8)(unsafe.Pointer(ts + 17138))
 36414  
 36415  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36416  	bp := tls.Alloc(130)
 36417  	defer tls.Free(130)
 36418  
 36419  	var zSql uintptr
 36420  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 36421  	var pTail uintptr = uintptr(0)
 36422  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36423  
 36424  	var rc int32
 36425  
 36426  	if objc != 5 && objc != 4 {
 36427  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36428  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36429  		return TCL_ERROR
 36430  	}
 36431  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36432  		return TCL_ERROR
 36433  	}
 36434  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 36435  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 36436  		return TCL_ERROR
 36437  	}
 36438  
 36439  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 36440  		if objc >= 5 {
 36441  			return bp + 72
 36442  		}
 36443  		return uintptr(0)
 36444  	}())
 36445  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36446  		return TCL_ERROR
 36447  	}
 36448  	if rc != 0 {
 36449  		return TCL_ERROR
 36450  	}
 36451  
 36452  	if objc >= 5 {
 36453  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 36454  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 36455  		} else {
 36456  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 36457  		}
 36458  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 36459  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36460  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 36461  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36462  			var _objPtr uintptr = pTail
 36463  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36464  				tcl.XTclFreeObj(tls, _objPtr)
 36465  			}
 36466  		}
 36467  	}
 36468  
 36469  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36470  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 36471  			return TCL_ERROR
 36472  		}
 36473  	}
 36474  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 36475  	return TCL_OK
 36476  }
 36477  
 36478  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36479  	bp := tls.Alloc(130)
 36480  	defer tls.Free(130)
 36481  
 36482  	var zSql uintptr
 36483  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 36484  	var pTail uintptr = uintptr(0)
 36485  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36486  
 36487  	var rc int32
 36488  
 36489  	if objc != 5 && objc != 4 {
 36490  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36491  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36492  		return TCL_ERROR
 36493  	}
 36494  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36495  		return TCL_ERROR
 36496  	}
 36497  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 36498  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 36499  		return TCL_ERROR
 36500  	}
 36501  
 36502  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 36503  		if objc >= 5 {
 36504  			return bp + 72
 36505  		}
 36506  		return uintptr(0)
 36507  	}())
 36508  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36509  		return TCL_ERROR
 36510  	}
 36511  	if rc != 0 {
 36512  		return TCL_ERROR
 36513  	}
 36514  
 36515  	if objc >= 5 {
 36516  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 36517  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 36518  		} else {
 36519  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 36520  		}
 36521  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 36522  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36523  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 36524  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36525  			var _objPtr uintptr = pTail
 36526  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36527  				tcl.XTclFreeObj(tls, _objPtr)
 36528  			}
 36529  		}
 36530  	}
 36531  
 36532  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36533  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 36534  			return TCL_ERROR
 36535  		}
 36536  	}
 36537  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 36538  	return TCL_OK
 36539  }
 36540  
 36541  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36542  	bp := tls.Alloc(156)
 36543  	defer tls.Free(156)
 36544  
 36545  	var zFilename uintptr
 36546  
 36547  	if objc != 3 && objc != 2 && objc != 1 {
 36548  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36549  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36550  		return TCL_ERROR
 36551  	}
 36552  
 36553  	if objc > 1 {
 36554  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36555  	} else {
 36556  		zFilename = uintptr(0)
 36557  	}
 36558  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 36559  
 36560  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36561  		return TCL_ERROR
 36562  	}
 36563  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 36564  	return TCL_OK
 36565  }
 36566  
 36567  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36568  	bp := tls.Alloc(484)
 36569  	defer tls.Free(484)
 36570  
 36571  	var zFilename uintptr
 36572  	var zVfs uintptr
 36573  	var flags int32 = 0
 36574  
 36575  	var rc int32
 36576  
 36577  	var i int32
 36578  
 36579  	if objc != 4 {
 36580  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 36581  		return TCL_ERROR
 36582  	}
 36583  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36584  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 36585  	if int32(*(*uint8)(unsafe.Pointer(zVfs))) == 0x00 {
 36586  		zVfs = uintptr(0)
 36587  	}
 36588  
 36589  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16, bp+24)
 36590  	if rc != TCL_OK {
 36591  		return rc
 36592  	}
 36593  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 36594  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 32)) = [21]OpenFlag{
 36595  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 36596  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 36597  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 36598  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 36599  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 36600  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 36601  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 36602  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 36603  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 36604  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 36605  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 36606  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 36607  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 36608  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 36609  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 36610  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 36611  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 36612  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 36613  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 36614  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 36615  			{},
 36616  		}
 36617  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + uintptr(i)*8)), bp+32, int32(unsafe.Sizeof(OpenFlag{})),
 36618  			ts+17631, 0, bp+368)
 36619  		if rc != TCL_OK {
 36620  			return rc
 36621  		}
 36622  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 368)))*16)).Fflag
 36623  	}
 36624  
 36625  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+376, flags, zVfs)
 36626  	if sqlite3TestMakePointerStr(tls, interp, bp+384, *(*uintptr)(unsafe.Pointer(bp + 376))) != 0 {
 36627  		return TCL_ERROR
 36628  	}
 36629  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+384, 0))
 36630  	return TCL_OK
 36631  }
 36632  
 36633  type OpenFlag = struct {
 36634  	FzFlag       uintptr
 36635  	Fflag        int32
 36636  	F__ccgo_pad1 [4]byte
 36637  }
 36638  
 36639  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36640  	bp := tls.Alloc(156)
 36641  	defer tls.Free(156)
 36642  
 36643  	var zFilename uintptr
 36644  
 36645  	if objc != 3 {
 36646  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36647  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36648  		return TCL_ERROR
 36649  	}
 36650  
 36651  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 36652  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 36653  
 36654  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36655  		return TCL_ERROR
 36656  	}
 36657  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 36658  	return TCL_OK
 36659  }
 36660  
 36661  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36662  	var zBuf uintptr
 36663  
 36664  	if objc != 2 {
 36665  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 36666  		return TCL_ERROR
 36667  	}
 36668  
 36669  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 36670  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 36671  	return TCL_OK
 36672  }
 36673  
 36674  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36675  	var zSql uintptr
 36676  	var zNorm uintptr
 36677  
 36678  	if objc != 2 {
 36679  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 36680  		return TCL_ERROR
 36681  	}
 36682  
 36683  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36684  	zNorm = sqlite3_normalize(tls, zSql)
 36685  	if zNorm != 0 {
 36686  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 36687  		sqlite3.Xsqlite3_free(tls, zNorm)
 36688  	}
 36689  	return TCL_OK
 36690  }
 36691  
 36692  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36693  	bp := tls.Alloc(40)
 36694  	defer tls.Free(40)
 36695  
 36696  	var rc int32
 36697  
 36698  	if objc != 2 {
 36699  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36700  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 36701  		return TCL_ERROR
 36702  	}
 36703  
 36704  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36705  		return TCL_ERROR
 36706  	}
 36707  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36708  
 36709  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36710  	return TCL_OK
 36711  }
 36712  
 36713  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36714  	bp := tls.Alloc(8)
 36715  	defer tls.Free(8)
 36716  
 36717  	if objc != 2 {
 36718  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36719  		return TCL_ERROR
 36720  	}
 36721  
 36722  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36723  		return TCL_ERROR
 36724  	}
 36725  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 36726  	return TCL_OK
 36727  }
 36728  
 36729  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36730  	bp := tls.Alloc(8)
 36731  	defer tls.Free(8)
 36732  
 36733  	var z uintptr
 36734  
 36735  	if objc != 2 {
 36736  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36737  		return TCL_ERROR
 36738  	}
 36739  
 36740  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36741  		return TCL_ERROR
 36742  	}
 36743  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36744  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 36745  	sqlite3.Xsqlite3_free(tls, z)
 36746  	return TCL_OK
 36747  }
 36748  
 36749  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36750  	bp := tls.Alloc(40)
 36751  	defer tls.Free(40)
 36752  
 36753  	if objc != 2 {
 36754  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36755  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36756  		return TCL_ERROR
 36757  	}
 36758  
 36759  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36760  		return TCL_ERROR
 36761  	}
 36762  
 36763  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36764  	return TCL_OK
 36765  }
 36766  
 36767  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36768  	bp := tls.Alloc(44)
 36769  	defer tls.Free(44)
 36770  
 36771  	var tp int32
 36772  
 36773  	if objc != 3 {
 36774  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36775  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36776  		return TCL_ERROR
 36777  	}
 36778  
 36779  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36780  		return TCL_ERROR
 36781  	}
 36782  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36783  		return TCL_ERROR
 36784  	}
 36785  
 36786  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36787  	switch tp {
 36788  	case SQLITE_INTEGER:
 36789  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 36790  		break
 36791  	case SQLITE_NULL:
 36792  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 36793  		break
 36794  	case SQLITE_FLOAT:
 36795  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 36796  		break
 36797  	case SQLITE_TEXT:
 36798  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 36799  		break
 36800  	case SQLITE_BLOB:
 36801  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 36802  		break
 36803  	default:
 36804  	}
 36805  
 36806  	return TCL_OK
 36807  }
 36808  
 36809  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36810  	bp := tls.Alloc(44)
 36811  	defer tls.Free(44)
 36812  
 36813  	var iVal i64
 36814  
 36815  	if objc != 3 {
 36816  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36817  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36818  		return TCL_ERROR
 36819  	}
 36820  
 36821  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36822  		return TCL_ERROR
 36823  	}
 36824  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36825  		return TCL_ERROR
 36826  	}
 36827  
 36828  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36829  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 36830  	return TCL_OK
 36831  }
 36832  
 36833  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36834  	bp := tls.Alloc(44)
 36835  	defer tls.Free(44)
 36836  
 36837  	var len int32
 36838  	var pBlob uintptr
 36839  
 36840  	if objc != 3 {
 36841  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36842  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36843  		return TCL_ERROR
 36844  	}
 36845  
 36846  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36847  		return TCL_ERROR
 36848  	}
 36849  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36850  		return TCL_ERROR
 36851  	}
 36852  
 36853  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36854  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36855  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 36856  	return TCL_OK
 36857  }
 36858  
 36859  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36860  	bp := tls.Alloc(44)
 36861  	defer tls.Free(44)
 36862  
 36863  	var rVal float64
 36864  
 36865  	if objc != 3 {
 36866  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36867  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36868  		return TCL_ERROR
 36869  	}
 36870  
 36871  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36872  		return TCL_ERROR
 36873  	}
 36874  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36875  		return TCL_ERROR
 36876  	}
 36877  
 36878  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36879  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 36880  	return TCL_OK
 36881  }
 36882  
 36883  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36884  	bp := tls.Alloc(40)
 36885  	defer tls.Free(40)
 36886  
 36887  	if objc != 2 {
 36888  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36889  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36890  		return TCL_ERROR
 36891  	}
 36892  
 36893  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36894  		return TCL_ERROR
 36895  	}
 36896  
 36897  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36898  	return TCL_OK
 36899  }
 36900  
 36901  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36902  	bp := tls.Alloc(44)
 36903  	defer tls.Free(44)
 36904  
 36905  	var xFunc uintptr
 36906  	var zRet uintptr
 36907  
 36908  	xFunc = clientData
 36909  	if objc != 3 {
 36910  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36911  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36912  		return TCL_ERROR
 36913  	}
 36914  
 36915  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36916  		return TCL_ERROR
 36917  	}
 36918  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36919  		return TCL_ERROR
 36920  	}
 36921  	zRet = (*struct {
 36922  		f func(*libc.TLS, uintptr, int32) uintptr
 36923  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36924  	if zRet != 0 {
 36925  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 36926  	}
 36927  	return TCL_OK
 36928  }
 36929  
 36930  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36931  	var rc int32
 36932  	if objc != 1 {
 36933  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36934  		return TCL_ERROR
 36935  	}
 36936  	rc = sqlite3.Xsqlite3_global_recover(tls)
 36937  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36938  	return TCL_OK
 36939  }
 36940  
 36941  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36942  	bp := tls.Alloc(44)
 36943  	defer tls.Free(44)
 36944  
 36945  	var pRet uintptr
 36946  	var zName16 uintptr
 36947  	var xFunc uintptr
 36948  
 36949  	xFunc = clientData
 36950  	if objc != 3 {
 36951  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36952  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36953  		return TCL_ERROR
 36954  	}
 36955  
 36956  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36957  		return TCL_ERROR
 36958  	}
 36959  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36960  		return TCL_ERROR
 36961  	}
 36962  
 36963  	zName16 = (*struct {
 36964  		f func(*libc.TLS, uintptr, int32) uintptr
 36965  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36966  	if zName16 != 0 {
 36967  		var n int32
 36968  		var z uintptr = zName16
 36969  		for n = 0; *(*uint8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*uint8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 36970  		}
 36971  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 36972  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 36973  	}
 36974  
 36975  	return TCL_OK
 36976  }
 36977  
 36978  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36979  	bp := tls.Alloc(44)
 36980  	defer tls.Free(44)
 36981  
 36982  	var xFunc uintptr
 36983  
 36984  	xFunc = clientData
 36985  	if objc != 3 {
 36986  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36987  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36988  		return TCL_ERROR
 36989  	}
 36990  
 36991  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36992  		return TCL_ERROR
 36993  	}
 36994  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36995  		return TCL_ERROR
 36996  	}
 36997  
 36998  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 36999  		f func(*libc.TLS, uintptr, int32) int32
 37000  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))))
 37001  	return TCL_OK
 37002  }
 37003  
 37004  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37005  	bp := tls.Alloc(40)
 37006  	defer tls.Free(40)
 37007  
 37008  	if argc != 2 {
 37009  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 37010  		return TCL_ERROR
 37011  	}
 37012  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 37013  		return TCL_ERROR
 37014  	}
 37015  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 37016  	return TCL_OK
 37017  }
 37018  
 37019  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37020  	bp := tls.Alloc(40)
 37021  	defer tls.Free(40)
 37022  
 37023  	var rc int32
 37024  
 37025  	if argc != 3 {
 37026  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37027  			ts+17678, 0))
 37028  		return TCL_ERROR
 37029  	}
 37030  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 37031  		return TCL_ERROR
 37032  	}
 37033  	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))
 37034  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37035  	return TCL_OK
 37036  }
 37037  
 37038  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37039  	bp := tls.Alloc(40)
 37040  	defer tls.Free(40)
 37041  
 37042  	var rc int32
 37043  
 37044  	if argc != 3 {
 37045  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37046  			ts+17678, 0))
 37047  		return TCL_ERROR
 37048  	}
 37049  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 37050  		return TCL_ERROR
 37051  	}
 37052  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), SQLITE_UTF8, uintptr(0), uintptr(0))
 37053  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37054  	return TCL_OK
 37055  }
 37056  
 37057  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37058  	bp := tls.Alloc(94)
 37059  	defer tls.Free(94)
 37060  
 37061  	if argc != 2 {
 37062  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37063  			ts+15001, 0))
 37064  		return TCL_ERROR
 37065  	}
 37066  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 37067  		return TCL_ERROR
 37068  	}
 37069  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+64, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3_get_autocommit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 37070  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 37071  	return TCL_OK
 37072  }
 37073  
 37074  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 37075  	bp := tls.Alloc(60)
 37076  	defer tls.Free(60)
 37077  
 37078  	var rc int32
 37079  
 37080  	if argc != 3 {
 37081  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 37082  			ts+15001, 0))
 37083  		return TCL_ERROR
 37084  	}
 37085  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 37086  		return TCL_ERROR
 37087  	}
 37088  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 37089  		return TCL_ERROR
 37090  	}
 37091  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)))
 37092  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 37093  	return TCL_OK
 37094  }
 37095  
 37096  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37097  	var pVar uintptr
 37098  	if objc != 2 {
 37099  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 37100  		return TCL_ERROR
 37101  	}
 37102  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0), TCL_LEAVE_ERR_MSG)
 37103  	if pVar == uintptr(0) {
 37104  		return TCL_ERROR
 37105  	}
 37106  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 37107  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 37108  	}
 37109  	return TCL_OK
 37110  }
 37111  
 37112  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37113  	bp := tls.Alloc(4)
 37114  	defer tls.Free(4)
 37115  
 37116  	var amt int32
 37117  	if objc != 1 && objc != 2 {
 37118  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37119  		return TCL_ERROR
 37120  	}
 37121  	if objc == 2 {
 37122  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37123  			return TCL_ERROR
 37124  		}
 37125  	} else {
 37126  		*(*int32)(unsafe.Pointer(bp)) = -1
 37127  	}
 37128  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 37129  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 37130  	return TCL_OK
 37131  }
 37132  
 37133  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37134  	bp := tls.Alloc(8)
 37135  	defer tls.Free(8)
 37136  
 37137  	var rc int32
 37138  	if objc != 2 {
 37139  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37140  		return TCL_ERROR
 37141  	}
 37142  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37143  		return TCL_ERROR
 37144  	}
 37145  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37146  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37147  	return TCL_OK
 37148  }
 37149  
 37150  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37151  	bp := tls.Alloc(8)
 37152  	defer tls.Free(8)
 37153  
 37154  	var rc int32
 37155  	if objc != 2 {
 37156  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37157  		return TCL_ERROR
 37158  	}
 37159  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37160  		return TCL_ERROR
 37161  	}
 37162  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37163  	if rc != 0 {
 37164  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 37165  		return TCL_ERROR
 37166  	}
 37167  
 37168  	tcl.XTcl_ResetResult(tls, interp)
 37169  	return TCL_OK
 37170  }
 37171  
 37172  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37173  	bp := tls.Alloc(8)
 37174  	defer tls.Free(8)
 37175  
 37176  	var iErrno int32
 37177  	if objc != 2 {
 37178  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37179  		return TCL_ERROR
 37180  	}
 37181  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37182  		return TCL_ERROR
 37183  	}
 37184  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37185  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 37186  	return TCL_OK
 37187  }
 37188  
 37189  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37190  	bp := tls.Alloc(24)
 37191  	defer tls.Free(24)
 37192  
 37193  	var zDbName uintptr
 37194  	if objc != 3 {
 37195  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 37196  		return TCL_ERROR
 37197  	}
 37198  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 37199  		return TCL_ERROR
 37200  	}
 37201  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37202  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 37203  	return TCL_OK
 37204  }
 37205  
 37206  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37207  	bp := tls.Alloc(8)
 37208  	defer tls.Free(8)
 37209  
 37210  	var zDbName uintptr
 37211  	if objc != 3 {
 37212  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 37213  		return TCL_ERROR
 37214  	}
 37215  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37216  		return TCL_ERROR
 37217  	}
 37218  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37219  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 37220  	return TCL_OK
 37221  }
 37222  
 37223  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37224  	bp := tls.Alloc(8)
 37225  	defer tls.Free(8)
 37226  
 37227  	var amt sqlite3_int64
 37228  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 37229  	if objc != 1 && objc != 2 {
 37230  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37231  		return TCL_ERROR
 37232  	}
 37233  	if objc == 2 {
 37234  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37235  			return TCL_ERROR
 37236  		}
 37237  	}
 37238  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 37239  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 37240  	return TCL_OK
 37241  }
 37242  
 37243  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37244  	bp := tls.Alloc(8)
 37245  	defer tls.Free(8)
 37246  
 37247  	var amt sqlite3_int64
 37248  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 37249  	if objc != 1 && objc != 2 {
 37250  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37251  		return TCL_ERROR
 37252  	}
 37253  	if objc == 2 {
 37254  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37255  			return TCL_ERROR
 37256  		}
 37257  	}
 37258  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 37259  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 37260  	return TCL_OK
 37261  }
 37262  
 37263  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37264  	sqlite3.Xsqlite3_thread_cleanup(tls)
 37265  	return TCL_OK
 37266  }
 37267  
 37268  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37269  	bp := tls.Alloc(40)
 37270  	defer tls.Free(40)
 37271  
 37272  	var i int32
 37273  	var v int32
 37274  	var a uintptr
 37275  	var pResult uintptr
 37276  
 37277  	if objc != 2 {
 37278  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37279  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37280  		return TCL_ERROR
 37281  	}
 37282  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37283  		return TCL_ERROR
 37284  	}
 37285  	pResult = tcl.XTcl_NewObj(tls)
 37286  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 37287  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt == uintptr(0) {
 37288  			v = -1
 37289  		} else {
 37290  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37291  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt))
 37292  			v = *(*int32)(unsafe.Pointer(a))
 37293  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37294  		}
 37295  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 37296  	}
 37297  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 37298  	return TCL_OK
 37299  }
 37300  
 37301  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37302  	var pTestObj uintptr
 37303  	var working int32 = 0
 37304  
 37305  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 37306  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 37307  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37308  		var _objPtr uintptr = pTestObj
 37309  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37310  			tcl.XTclFreeObj(tls, _objPtr)
 37311  		}
 37312  	}
 37313  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(working != 0)))
 37314  	return TCL_OK
 37315  }
 37316  
 37317  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37318  	bp := tls.Alloc(496)
 37319  	defer tls.Free(496)
 37320  
 37321  	var i int32
 37322  	var pMain uintptr
 37323  
 37324  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 37325  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37326  	(*sqlite3_vfs)(unsafe.Pointer(bp + 168)).FzName = ts + 17732
 37327  
 37328  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37329  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37330  
 37331  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 0)
 37332  
 37333  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37334  
 37335  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 1)
 37336  
 37337  	if pMain != 0 {
 37338  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 37339  
 37340  	}
 37341  
 37342  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 37343  		*(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37344  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 37345  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)))
 37346  
 37347  		}
 37348  	}
 37349  
 37350  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 37351  
 37352  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 37353  
 37354  	for i = int32(uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)); i >= 0; i-- {
 37355  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 37356  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)), 1)
 37357  
 37358  		}
 37359  	}
 37360  
 37361  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37362  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 37363  
 37364  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37365  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 37366  
 37367  	return TCL_OK
 37368  }
 37369  
 37370  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37371  	bp := tls.Alloc(168)
 37372  	defer tls.Free(168)
 37373  
 37374  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37375  
 37376  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37377  		return TCL_ERROR
 37378  	}
 37379  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37380  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37381  		return TCL_ERROR
 37382  	}
 37383  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37384  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37385  		return TCL_ERROR
 37386  	}
 37387  	return TCL_OK
 37388  }
 37389  
 37390  var apVfs [20]uintptr
 37391  var nVfs int32 = 0
 37392  
 37393  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37394  	var i int32
 37395  	for i = 0; i < int32(uint64(unsafe.Sizeof(apVfs))/uint64(unsafe.Sizeof(uintptr(0)))); i++ {
 37396  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37397  		if apVfs[i] == uintptr(0) {
 37398  			break
 37399  		}
 37400  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 37401  	}
 37402  	nVfs = i
 37403  	return TCL_OK
 37404  }
 37405  
 37406  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37407  	var i int32
 37408  	for i = nVfs - 1; i >= 0; i-- {
 37409  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 37410  	}
 37411  	return TCL_OK
 37412  }
 37413  
 37414  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37415  	bp := tls.Alloc(44)
 37416  	defer tls.Free(44)
 37417  
 37418  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 37419  
 37420  	var rc int32
 37421  	_ = rc
 37422  
 37423  	if objc != 2 {
 37424  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37425  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37426  		return TCL_ERROR
 37427  	}
 37428  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37429  		return TCL_ERROR
 37430  	}
 37431  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+40)
 37432  
 37433  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+40)
 37434  
 37435  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+40)
 37436  
 37437  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+40)
 37438  
 37439  	return TCL_OK
 37440  }
 37441  
 37442  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37443  	bp := tls.Alloc(76)
 37444  	defer tls.Free(76)
 37445  
 37446  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 37447  
 37448  	var rc int32
 37449  
 37450  	if objc != 2 {
 37451  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37452  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37453  		return TCL_ERROR
 37454  	}
 37455  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37456  		return TCL_ERROR
 37457  	}
 37458  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+72)
 37459  	if rc != 0 {
 37460  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37461  		return TCL_ERROR
 37462  	}
 37463  	if *(*int32)(unsafe.Pointer(bp + 72)) != 0 {
 37464  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 37465  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 72))), uintptr(0)), ts+4894, 0))
 37466  		return TCL_ERROR
 37467  	}
 37468  	return TCL_OK
 37469  }
 37470  
 37471  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37472  	bp := tls.Alloc(120)
 37473  	defer tls.Free(120)
 37474  
 37475  	var zDb uintptr
 37476  
 37477  	var rc int32
 37478  
 37479  	if objc != 3 && objc != 2 {
 37480  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 37481  		return TCL_ERROR
 37482  	}
 37483  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 37484  		return TCL_ERROR
 37485  	}
 37486  	if objc == 3 {
 37487  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37488  	} else {
 37489  		zDb = uintptr(0)
 37490  	}
 37491  
 37492  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+16)
 37493  	if rc != 0 {
 37494  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37495  		return TCL_ERROR
 37496  	} else {
 37497  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+20, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 16))))
 37498  		tcl.XTcl_SetResult(tls, interp, bp+20, uintptr(1))
 37499  		return TCL_OK
 37500  	}
 37501  	return int32(0)
 37502  }
 37503  
 37504  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37505  	bp := tls.Alloc(12)
 37506  	defer tls.Free(12)
 37507  
 37508  	var zDb uintptr
 37509  
 37510  	var rc int32
 37511  
 37512  	if objc != 4 {
 37513  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37514  		return TCL_ERROR
 37515  	}
 37516  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37517  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 37518  		return TCL_ERROR
 37519  	}
 37520  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37521  	if int32(*(*uint8)(unsafe.Pointer(zDb))) == 0 {
 37522  		zDb = uintptr(0)
 37523  	}
 37524  
 37525  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+8)
 37526  	if rc != 0 {
 37527  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37528  		return TCL_ERROR
 37529  	}
 37530  	return TCL_OK
 37531  }
 37532  
 37533  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37534  	bp := tls.Alloc(16)
 37535  	defer tls.Free(16)
 37536  
 37537  	var zDb uintptr
 37538  
 37539  	var rc int32
 37540  
 37541  	if objc != 4 {
 37542  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37543  		return TCL_ERROR
 37544  	}
 37545  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37546  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 37547  		return TCL_ERROR
 37548  	}
 37549  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37550  	if int32(*(*uint8)(unsafe.Pointer(zDb))) == 0 {
 37551  		zDb = uintptr(0)
 37552  	}
 37553  
 37554  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+8)
 37555  	if rc != 0 {
 37556  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37557  		return TCL_ERROR
 37558  	}
 37559  	return TCL_OK
 37560  }
 37561  
 37562  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37563  	bp := tls.Alloc(40)
 37564  	defer tls.Free(40)
 37565  
 37566  	if objc != 3 {
 37567  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37568  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 37569  		return TCL_ERROR
 37570  	}
 37571  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37572  		return TCL_ERROR
 37573  	}
 37574  
 37575  	return TCL_OK
 37576  }
 37577  
 37578  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37579  	bp := tls.Alloc(176)
 37580  	defer tls.Free(176)
 37581  
 37582  	var rc int32
 37583  
 37584  	if objc != 3 {
 37585  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37586  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37587  		return TCL_ERROR
 37588  	}
 37589  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37590  		return TCL_ERROR
 37591  	}
 37592  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37593  		return TCL_ERROR
 37594  	}
 37595  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+72)
 37596  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 37597  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 37598  	return TCL_OK
 37599  }
 37600  
 37601  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37602  	bp := tls.Alloc(176)
 37603  	defer tls.Free(176)
 37604  
 37605  	var rc int32
 37606  
 37607  	if objc != 3 {
 37608  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37609  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37610  		return TCL_ERROR
 37611  	}
 37612  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37613  		return TCL_ERROR
 37614  	}
 37615  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37616  		return TCL_ERROR
 37617  	}
 37618  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+72)
 37619  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 37620  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 37621  	return TCL_OK
 37622  }
 37623  
 37624  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37625  	bp := tls.Alloc(64)
 37626  	defer tls.Free(64)
 37627  
 37628  	var zDbName uintptr = ts + 85
 37629  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 37630  
 37631  	if objc != 2 && objc != 3 {
 37632  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37633  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37634  		return TCL_ERROR
 37635  	}
 37636  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37637  		return TCL_ERROR
 37638  	}
 37639  	if objc == 3 {
 37640  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37641  	}
 37642  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+56)
 37643  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 37644  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 37645  	return TCL_OK
 37646  }
 37647  
 37648  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37649  	bp := tls.Alloc(12)
 37650  	defer tls.Free(12)
 37651  
 37652  	var zDbName uintptr = ts + 85
 37653  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37654  	var rc int32
 37655  
 37656  	if objc != 3 {
 37657  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17844)
 37658  		return TCL_ERROR
 37659  	}
 37660  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37661  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37662  		return TCL_ERROR
 37663  	}
 37664  
 37665  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+8)
 37666  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 37667  	return TCL_OK
 37668  }
 37669  
 37670  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37671  	bp := tls.Alloc(64)
 37672  	defer tls.Free(64)
 37673  
 37674  	var zDbName uintptr = ts + 85
 37675  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 37676  
 37677  	if objc != 2 && objc != 3 {
 37678  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37679  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37680  		return TCL_ERROR
 37681  	}
 37682  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37683  		return TCL_ERROR
 37684  	}
 37685  	if objc == 3 {
 37686  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37687  	}
 37688  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+56)
 37689  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 37690  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 37691  	return TCL_OK
 37692  }
 37693  
 37694  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37695  	bp := tls.Alloc(44)
 37696  	defer tls.Free(44)
 37697  
 37698  	var zName uintptr = ts + 85
 37699  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 37700  	var rc int32 = SQLITE_OK
 37701  
 37702  	if objc != 2 && objc != 3 {
 37703  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37704  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37705  		return TCL_ERROR
 37706  	}
 37707  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37708  		return TCL_ERROR
 37709  	}
 37710  	if objc == 3 {
 37711  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37712  	}
 37713  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+40)
 37714  	if rc != SQLITE_OK {
 37715  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37716  		return TCL_ERROR
 37717  	}
 37718  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 37719  	return TCL_OK
 37720  }
 37721  
 37722  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37723  	var pVfs uintptr
 37724  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 37725  	if objc != 1 {
 37726  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 37727  		return TCL_ERROR
 37728  	}
 37729  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 37730  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 37731  	}
 37732  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37733  	return TCL_OK
 37734  }
 37735  
 37736  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37737  	bp := tls.Alloc(68)
 37738  	defer tls.Free(68)
 37739  
 37740  	var rc int32
 37741  	var i int32
 37742  	var id int32 = 0
 37743  
 37744  	var zId uintptr
 37745  
 37746  	if objc != 4 {
 37747  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37748  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17849, 0))
 37749  		return TCL_ERROR
 37750  	}
 37751  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 37752  		return TCL_ERROR
 37753  	}
 37754  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37755  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 37756  		FzName       uintptr
 37757  		Fid          int32
 37758  		F__ccgo_pad1 [4]byte
 37759  	}{})); i++ {
 37760  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 37761  			id = aId[i].Fid
 37762  			break
 37763  		}
 37764  	}
 37765  	if uint64(i) >= uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 37766  		FzName       uintptr
 37767  		Fid          int32
 37768  		F__ccgo_pad1 [4]byte
 37769  	}{})) {
 37770  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17862, zId, uintptr(0)))
 37771  		return TCL_ERROR
 37772  	}
 37773  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 37774  		return TCL_ERROR
 37775  	}
 37776  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 64)))
 37777  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37778  	return TCL_OK
 37779  }
 37780  
 37781  var aId = [14]struct {
 37782  	FzName       uintptr
 37783  	Fid          int32
 37784  	F__ccgo_pad1 [4]byte
 37785  }{
 37786  	{FzName: ts + 17883},
 37787  	{FzName: ts + 17903, Fid: SQLITE_LIMIT_SQL_LENGTH},
 37788  	{FzName: ts + 17927, Fid: SQLITE_LIMIT_COLUMN},
 37789  	{FzName: ts + 17947, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 37790  	{FzName: ts + 17971, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 37791  	{FzName: ts + 18000, Fid: SQLITE_LIMIT_VDBE_OP},
 37792  	{FzName: ts + 18021, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 37793  	{FzName: ts + 18047, Fid: SQLITE_LIMIT_ATTACHED},
 37794  	{FzName: ts + 18069, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 37795  	{FzName: ts + 18102, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 37796  	{FzName: ts + 18131, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 37797  	{FzName: ts + 18158, Fid: SQLITE_LIMIT_WORKER_THREADS},
 37798  	{FzName: ts + 18186, Fid: -1},
 37799  	{FzName: ts + 18208, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 37800  }
 37801  
 37802  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37803  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 37804  	_ = rc
 37805  
 37806  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 37807  
 37808  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 37809  	return TCL_OK
 37810  }
 37811  
 37812  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37813  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 37814  	return TCL_OK
 37815  }
 37816  
 37817  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37818  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 37819  	return TCL_OK
 37820  }
 37821  
 37822  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37823  	bp := tls.Alloc(32)
 37824  	defer tls.Free(32)
 37825  
 37826  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 37827  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 37828  	if objc != 2 && objc != 3 {
 37829  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18228)
 37830  		return TCL_ERROR
 37831  	}
 37832  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 37833  		return TCL_ERROR
 37834  	}
 37835  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) != 0 {
 37836  		return TCL_ERROR
 37837  	}
 37838  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 24))))
 37839  	return TCL_OK
 37840  }
 37841  
 37842  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37843  	bp := tls.Alloc(12)
 37844  	defer tls.Free(12)
 37845  
 37846  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37847  	if objc != 2 {
 37848  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 37849  		return TCL_ERROR
 37850  	}
 37851  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 37852  		return TCL_ERROR
 37853  	}
 37854  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 37855  	return TCL_OK
 37856  }
 37857  
 37858  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37859  	bp := tls.Alloc(8)
 37860  	defer tls.Free(8)
 37861  
 37862  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 37863  	return TCL_OK
 37864  }
 37865  
 37866  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37867  	bp := tls.Alloc(8)
 37868  	defer tls.Free(8)
 37869  
 37870  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 37871  	return TCL_OK
 37872  }
 37873  
 37874  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37875  	bp := tls.Alloc(16)
 37876  	defer tls.Free(16)
 37877  
 37878  	var pRet uintptr
 37879  
 37880  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 37881  
 37882  	pRet = tcl.XTcl_NewObj(tls)
 37883  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18246, -1))
 37884  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 37885  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18254, -1))
 37886  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 37887  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18258, -1))
 37888  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 37889  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18262, -1))
 37890  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 37891  
 37892  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37893  
 37894  	return TCL_OK
 37895  }
 37896  
 37897  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 37898  	var ii int32
 37899  	for ii = 0; ii < nArg; ii++ {
 37900  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*8)), ts+13692, -1, TCL_EVAL_GLOBAL)
 37901  	}
 37902  }
 37903  
 37904  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37905  	bp := tls.Alloc(8)
 37906  	defer tls.Free(8)
 37907  
 37908  	var rc int32
 37909  
 37910  	if objc != 2 {
 37911  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37912  		return TCL_ERROR
 37913  	}
 37914  
 37915  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37916  		return TCL_ERROR
 37917  	}
 37918  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 37919  		f func(*libc.TLS, uintptr, int32)
 37920  	}{test_unlock_notify_cb})), interp)
 37921  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37922  	return TCL_OK
 37923  }
 37924  
 37925  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37926  	bp := tls.Alloc(8)
 37927  	defer tls.Free(8)
 37928  
 37929  	var zDb uintptr = uintptr(0)
 37930  
 37931  	var rc int32
 37932  
 37933  	if objc != 3 && objc != 2 {
 37934  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18273)
 37935  		return TCL_ERROR
 37936  	}
 37937  
 37938  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37939  		return TCL_ERROR
 37940  	}
 37941  	if objc == 3 {
 37942  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37943  	}
 37944  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 37945  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37946  	return TCL_OK
 37947  }
 37948  
 37949  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37950  	bp := tls.Alloc(96)
 37951  	defer tls.Free(96)
 37952  
 37953  	var zDb uintptr = uintptr(0)
 37954  
 37955  	var rc int32
 37956  
 37957  	*(*int32)(unsafe.Pointer(bp + 88)) = -555
 37958  	*(*int32)(unsafe.Pointer(bp + 92)) = -555
 37959  	var pRet uintptr
 37960  
 37961  	*(*[5]uintptr)(unsafe.Pointer(bp + 48)) = [5]uintptr{ts + 18283, ts + 18291, ts + 18296, ts + 18304, uintptr(0)}
 37962  
 37963  	if objc != 3 && objc != 4 {
 37964  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18313)
 37965  		return TCL_ERROR
 37966  	}
 37967  
 37968  	if objc == 4 {
 37969  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37970  	}
 37971  	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) &&
 37972  		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) {
 37973  		return TCL_ERROR
 37974  	}
 37975  
 37976  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 40)), bp+88, bp+92)
 37977  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 37978  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37979  		tcl.XTcl_ResetResult(tls, interp)
 37980  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 37981  		return TCL_ERROR
 37982  	}
 37983  
 37984  	pRet = tcl.XTcl_NewObj(tls)
 37985  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 37986  		if rc == SQLITE_BUSY {
 37987  			return 1
 37988  		}
 37989  		return 0
 37990  	}()))
 37991  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 88))))
 37992  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 92))))
 37993  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37994  
 37995  	return TCL_OK
 37996  }
 37997  
 37998  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37999  	bp := tls.Alloc(12)
 38000  	defer tls.Free(12)
 38001  
 38002  	var rc int32
 38003  
 38004  	if objc != 3 {
 38005  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18333)
 38006  		return TCL_ERROR
 38007  	}
 38008  
 38009  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 38010  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38011  		return TCL_ERROR
 38012  	}
 38013  
 38014  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 38015  	tcl.XTcl_ResetResult(tls, interp)
 38016  	if rc != SQLITE_OK {
 38017  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 38018  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 38019  		return TCL_ERROR
 38020  	}
 38021  
 38022  	return TCL_OK
 38023  }
 38024  
 38025  type LogCallback = struct {
 38026  	FpInterp uintptr
 38027  	FpObj    uintptr
 38028  }
 38029  
 38030  var logcallback = LogCallback{}
 38031  
 38032  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 38033  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 38034  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 38035  	tcl.XTcl_ListObjAppendElement(tls,
 38036  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 38037  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 38038  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 38039  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 38040  		var _objPtr uintptr = pNew
 38041  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 38042  			tcl.XTclFreeObj(tls, _objPtr)
 38043  		}
 38044  	}
 38045  }
 38046  
 38047  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38048  	bp := tls.Alloc(32)
 38049  	defer tls.Free(32)
 38050  
 38051  	if objc > 2 {
 38052  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 38053  		return TCL_ERROR
 38054  	}
 38055  	if logcallback.FpObj != 0 {
 38056  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 38057  			var _objPtr uintptr = logcallback.FpObj
 38058  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 38059  				tcl.XTclFreeObj(tls, _objPtr)
 38060  			}
 38061  		}
 38062  		logcallback.FpObj = uintptr(0)
 38063  		logcallback.FpInterp = uintptr(0)
 38064  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 38065  	}
 38066  	if objc > 1 {
 38067  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 38068  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 38069  		logcallback.FpInterp = interp
 38070  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 38071  			f func(*libc.TLS, uintptr, int32, uintptr)
 38072  		}{xLogcallback})), uintptr(0)))
 38073  	}
 38074  	return TCL_OK
 38075  }
 38076  
 38077  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38078  	bp := tls.Alloc(112)
 38079  	defer tls.Free(112)
 38080  
 38081  	if objc < 2 {
 38082  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18342)
 38083  		return TCL_ERROR
 38084  	}
 38085  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 38086  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 38087  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 38088  		return TCL_ERROR
 38089  	}
 38090  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 38091  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18354,
 38092  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 38093  		return TCL_ERROR
 38094  	}
 38095  	return (*struct {
 38096  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 38097  	})(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)
 38098  }
 38099  
 38100  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 38101  	bp := tls.Alloc(48)
 38102  	defer tls.Free(48)
 38103  
 38104  	var zSql uintptr
 38105  	var zExplain uintptr
 38106  
 38107  	var rc int32
 38108  
 38109  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 38110  	if zSql == uintptr(0) {
 38111  		return SQLITE_ERROR
 38112  	}
 38113  
 38114  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 38115  	if zExplain == uintptr(0) {
 38116  		return SQLITE_NOMEM
 38117  	}
 38118  
 38119  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 38120  	sqlite3.Xsqlite3_free(tls, zExplain)
 38121  	if rc != SQLITE_OK {
 38122  		return rc
 38123  	}
 38124  
 38125  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 38126  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 38127  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 38128  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 38129  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 38130  
 38131  		libc.Xprintf(tls, ts+18379, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 38132  	}
 38133  
 38134  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 38135  }
 38136  
 38137  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38138  	bp := tls.Alloc(8)
 38139  	defer tls.Free(8)
 38140  
 38141  	var rc int32
 38142  
 38143  	if objc != 2 {
 38144  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 38145  		return TCL_ERROR
 38146  	}
 38147  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38148  		return TCL_ERROR
 38149  	}
 38150  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 38151  
 38152  	libc.Xfflush(tls, libc.Xstdout)
 38153  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 38154  	return TCL_OK
 38155  }
 38156  
 38157  type timex = struct {
 38158  	Fmodes       uint32
 38159  	F__ccgo_pad1 [4]byte
 38160  	Foffset      int64
 38161  	Ffreq        int64
 38162  	Fmaxerror    int64
 38163  	Festerror    int64
 38164  	Fstatus      int32
 38165  	F__ccgo_pad2 [4]byte
 38166  	Fconstant    int64
 38167  	Fprecision   int64
 38168  	Ftolerance   int64
 38169  	Ftime        struct {
 38170  		Ftv_sec  int64
 38171  		Ftv_usec int64
 38172  	}
 38173  	Ftick        int64
 38174  	Fppsfreq     int64
 38175  	Fjitter      int64
 38176  	Fshift       int32
 38177  	F__ccgo_pad3 [4]byte
 38178  	Fstabil      int64
 38179  	Fjitcnt      int64
 38180  	Fcalcnt      int64
 38181  	Ferrcnt      int64
 38182  	Fstbcnt      int64
 38183  	Ftai         int32
 38184  	__164        uint32
 38185  	__168        uint32
 38186  	__172        uint32
 38187  	__176        uint32
 38188  	__180        uint32
 38189  	__184        uint32
 38190  	__188        uint32
 38191  	__192        uint32
 38192  	__196        uint32
 38193  	__200        uint32
 38194  	__204        uint32
 38195  }
 38196  
 38197  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 38198  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 38199  	var pTm uintptr = aliasTM
 38200  	var altT time_t
 38201  	var iJD sqlite3_int64
 38202  	var Z int32
 38203  	var A int32
 38204  	var B int32
 38205  	var C int32
 38206  	var D int32
 38207  	var E int32
 38208  	var X1 int32
 38209  	var S int32
 38210  
 38211  	if t/int64(86400)&int64(1) != 0 {
 38212  		altT = t + int64(1800)
 38213  	} else {
 38214  		altT = t - int64(1800)
 38215  	}
 38216  	iJD = altT + 210866760000
 38217  	Z = int32((iJD + int64(43200)) / int64(86400))
 38218  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 38219  	A = Z + 1 + A - A/4
 38220  	B = A + 1524
 38221  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 38222  	D = 36525 * (C & 32767) / 100
 38223  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 38224  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 38225  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 38226  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 38227  		if E < 14 {
 38228  			return E - 2
 38229  		}
 38230  		return E - 14
 38231  	}()
 38232  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 38233  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 38234  			return C - 4716
 38235  		}
 38236  		return C - 4715
 38237  	}() - 1900
 38238  	S = int32((iJD + int64(43200)) % int64(86400))
 38239  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 38240  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 38241  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 38242  	return libc.Bool32(t == int64(959609760))
 38243  }
 38244  
 38245  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38246  	bp := tls.Alloc(192)
 38247  	defer tls.Free(192)
 38248  
 38249  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 38250  		{FzName: ts + 18392, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 38251  		{FzName: ts + 18424, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 38252  		{FzName: ts + 18452, Fi: SQLITE_TESTCTRL_IMPOSTER},
 38253  		{FzName: ts + 18477, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 38254  	}
 38255  
 38256  	var iFlag int32
 38257  	var rc int32
 38258  
 38259  	if objc < 2 {
 38260  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18512)
 38261  		return TCL_ERROR
 38262  	}
 38263  
 38264  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 38265  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18525, 0, bp+136)
 38266  	if rc != TCL_OK {
 38267  		return rc
 38268  	}
 38269  
 38270  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 136)))*16)).Fi
 38271  	switch iFlag {
 38272  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 38273  		{
 38274  			*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 38275  			if objc != 3 {
 38276  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 38277  				return TCL_ERROR
 38278  			}
 38279  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+144) != 0 {
 38280  				return TCL_ERROR
 38281  			}
 38282  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 144))))
 38283  			break
 38284  
 38285  		}
 38286  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 38287  		{
 38288  			if objc != 3 {
 38289  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18530)
 38290  				return TCL_ERROR
 38291  			}
 38292  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+152) != 0 {
 38293  				return TCL_ERROR
 38294  			}
 38295  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 152)), *(*uintptr)(unsafe.Pointer(&struct {
 38296  				f func(*libc.TLS, uintptr, uintptr) int32
 38297  			}{testLocaltime}))))
 38298  			break
 38299  
 38300  		}
 38301  
 38302  	case SQLITE_TESTCTRL_SORTER_MMAP:
 38303  		{
 38304  			if objc != 4 {
 38305  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18536)
 38306  				return TCL_ERROR
 38307  			}
 38308  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+160) != 0 {
 38309  				return TCL_ERROR
 38310  			}
 38311  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168) != 0 {
 38312  				return TCL_ERROR
 38313  			}
 38314  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 160)), *(*int32)(unsafe.Pointer(bp + 168))))
 38315  			break
 38316  
 38317  		}
 38318  
 38319  	case SQLITE_TESTCTRL_IMPOSTER:
 38320  		{
 38321  			var zDbName uintptr
 38322  
 38323  			if objc != 6 {
 38324  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18545)
 38325  				return TCL_ERROR
 38326  			}
 38327  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+176) != 0 {
 38328  				return TCL_ERROR
 38329  			}
 38330  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 38331  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+184) != 0 {
 38332  				return TCL_ERROR
 38333  			}
 38334  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+188) != 0 {
 38335  				return TCL_ERROR
 38336  			}
 38337  			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))))
 38338  			break
 38339  
 38340  		}
 38341  	}
 38342  
 38343  	tcl.XTcl_ResetResult(tls, interp)
 38344  	return TCL_OK
 38345  }
 38346  
 38347  type Verb = struct {
 38348  	FzName       uintptr
 38349  	Fi           int32
 38350  	F__ccgo_pad1 [4]byte
 38351  }
 38352  
 38353  type rlim_t = uint64
 38354  type rlim64_t = uint64
 38355  
 38356  type rlimit = struct {
 38357  	Frlim_cur rlim_t
 38358  	Frlim_max rlim_t
 38359  }
 38360  
 38361  type rlimit64 = struct {
 38362  	Frlim_cur rlim64_t
 38363  	Frlim_max rlim64_t
 38364  }
 38365  
 38366  type rusage = struct {
 38367  	Fru_utime struct {
 38368  		Ftv_sec  int64
 38369  		Ftv_usec int64
 38370  	}
 38371  	Fru_stime struct {
 38372  		Ftv_sec  int64
 38373  		Ftv_usec int64
 38374  	}
 38375  	F__32  struct{ Fru_maxrss int64 }
 38376  	F__40  struct{ Fru_ixrss int64 }
 38377  	F__48  struct{ Fru_idrss int64 }
 38378  	F__56  struct{ Fru_isrss int64 }
 38379  	F__64  struct{ Fru_minflt int64 }
 38380  	F__72  struct{ Fru_majflt int64 }
 38381  	F__80  struct{ Fru_nswap int64 }
 38382  	F__88  struct{ Fru_inblock int64 }
 38383  	F__96  struct{ Fru_oublock int64 }
 38384  	F__104 struct{ Fru_msgsnd int64 }
 38385  	F__112 struct{ Fru_msgrcv int64 }
 38386  	F__120 struct{ Fru_nsignals int64 }
 38387  	F__128 struct{ Fru_nvcsw int64 }
 38388  	F__136 struct{ Fru_nivcsw int64 }
 38389  }
 38390  
 38391  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38392  	bp := tls.Alloc(1216)
 38393  	defer tls.Free(1216)
 38394  
 38395  	libc.Xmemset(tls, bp+48, 0, uint64(unsafe.Sizeof(rusage{})))
 38396  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 38397  
 38398  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]uint8{})), bp+192,
 38399  		ts+18566,
 38400  		libc.VaList(bp, int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec),
 38401  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec),
 38402  			int32(*(*int64)(unsafe.Pointer(bp + 48 + 64))), int32(*(*int64)(unsafe.Pointer(bp + 48 + 72)))))
 38403  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+192, -1))
 38404  	return TCL_OK
 38405  }
 38406  
 38407  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38408  	bp := tls.Alloc(68)
 38409  	defer tls.Free(68)
 38410  
 38411  	var i int32
 38412  
 38413  	var zOpt uintptr
 38414  
 38415  	var mask int32 = 0
 38416  
 38417  	if objc != 4 {
 38418  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18626)
 38419  		return TCL_ERROR
 38420  	}
 38421  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 38422  		return TCL_ERROR
 38423  	}
 38424  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 38425  		return TCL_ERROR
 38426  	}
 38427  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38428  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38429  		FzOptName    uintptr
 38430  		Fmask        int32
 38431  		F__ccgo_pad1 [4]byte
 38432  	}{})); i++ {
 38433  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 38434  			mask = aOpt[i].Fmask
 38435  			break
 38436  		}
 38437  	}
 38438  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 38439  		mask = ^mask
 38440  	}
 38441  	if uint64(i) >= uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38442  		FzOptName    uintptr
 38443  		Fmask        int32
 38444  		F__ccgo_pad1 [4]byte
 38445  	}{})) {
 38446  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18641,
 38447  			uintptr(0)))
 38448  		for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38449  			FzOptName    uintptr
 38450  			Fmask        int32
 38451  			F__ccgo_pad1 [4]byte
 38452  		}{})); i++ {
 38453  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 38454  		}
 38455  		return TCL_ERROR
 38456  	}
 38457  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 38458  	return TCL_OK
 38459  }
 38460  
 38461  var aOpt = [14]struct {
 38462  	FzOptName    uintptr
 38463  	Fmask        int32
 38464  	F__ccgo_pad1 [4]byte
 38465  }{
 38466  	{FzOptName: ts + 18682, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 38467  	{FzOptName: ts + 18686},
 38468  	{FzOptName: ts + 18691, Fmask: SQLITE_QueryFlattener},
 38469  	{FzOptName: ts + 18707, Fmask: SQLITE_GroupByOrder},
 38470  	{FzOptName: ts + 18721, Fmask: SQLITE_FactorOutConst},
 38471  	{FzOptName: ts + 18738, Fmask: SQLITE_DistinctOpt},
 38472  	{FzOptName: ts + 18751, Fmask: SQLITE_CoverIdxScan},
 38473  	{FzOptName: ts + 18766, Fmask: SQLITE_OrderByIdxJoin},
 38474  	{FzOptName: ts + 18784, Fmask: SQLITE_Transitive},
 38475  	{FzOptName: ts + 18795, Fmask: SQLITE_OmitNoopJoin},
 38476  	{FzOptName: ts + 18810, Fmask: SQLITE_Stat4},
 38477  	{FzOptName: ts + 18816, Fmask: SQLITE_SkipScan},
 38478  	{FzOptName: ts + 18826, Fmask: SQLITE_PushDown},
 38479  	{FzOptName: ts + 18836, Fmask: SQLITE_BalancedMerge},
 38480  }
 38481  
 38482  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38483  	bp := tls.Alloc(80)
 38484  	defer tls.Free(80)
 38485  
 38486  	var zName uintptr
 38487  	var i int32
 38488  	var j int32
 38489  	var rc int32
 38490  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 38491  	if objc < 3 {
 38492  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18851)
 38493  		return TCL_ERROR
 38494  	}
 38495  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 38496  		return TCL_ERROR
 38497  	}
 38498  	for j = 2; j < objc; j++ {
 38499  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*8)))
 38500  		for i = 0; i < int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 38501  			FzExtName uintptr
 38502  			FpInit    uintptr
 38503  		}{}))); i++ {
 38504  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 38505  				break
 38506  			}
 38507  		}
 38508  		if i >= int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 38509  			FzExtName uintptr
 38510  			FpInit    uintptr
 38511  		}{}))) {
 38512  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18863, zName, uintptr(0)))
 38513  			return TCL_ERROR
 38514  		}
 38515  		if aExtension[i].FpInit != 0 {
 38516  			rc = (*struct {
 38517  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 38518  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+72, uintptr(0))
 38519  		} else {
 38520  			rc = SQLITE_OK
 38521  		}
 38522  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 38523  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18883, zName, ts+18902, *(*uintptr)(unsafe.Pointer(bp + 72)),
 38524  				uintptr(0)))
 38525  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38526  			return TCL_ERROR
 38527  		}
 38528  	}
 38529  	return TCL_OK
 38530  }
 38531  
 38532  var aExtension = [22]struct {
 38533  	FzExtName uintptr
 38534  	FpInit    uintptr
 38535  }{
 38536  	{FzExtName: ts + 18912, FpInit: 0},
 38537  	{FzExtName: ts + 18919, FpInit: 0},
 38538  	{FzExtName: ts + 4060, FpInit: 0},
 38539  	{FzExtName: ts + 18929, FpInit: 0},
 38540  	{FzExtName: ts + 4815, FpInit: 0},
 38541  	{FzExtName: ts + 4838, FpInit: 0},
 38542  	{FzExtName: ts + 4896, FpInit: 0},
 38543  	{FzExtName: ts + 4974, FpInit: 0},
 38544  	{FzExtName: ts + 18937, FpInit: 0},
 38545  	{FzExtName: ts + 5483, FpInit: 0},
 38546  	{FzExtName: ts + 5507, FpInit: 0},
 38547  	{FzExtName: ts + 18944, FpInit: 0},
 38548  	{FzExtName: ts + 6087, FpInit: 0},
 38549  	{FzExtName: ts + 6162, FpInit: 0},
 38550  	{FzExtName: ts + 6535, FpInit: 0},
 38551  	{FzExtName: ts + 6831, FpInit: 0},
 38552  	{FzExtName: ts + 6846, FpInit: 0},
 38553  	{FzExtName: ts + 18953, FpInit: 0},
 38554  	{FzExtName: ts + 18960, FpInit: 0},
 38555  	{FzExtName: ts + 18969, FpInit: 0},
 38556  	{FzExtName: ts + 8921, FpInit: 0},
 38557  	{FzExtName: ts + 9463, FpInit: 0},
 38558  }
 38559  
 38560  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38561  	bp := tls.Alloc(4)
 38562  	defer tls.Free(4)
 38563  
 38564  	if objc != 2 {
 38565  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 38566  		return TCL_ERROR
 38567  	}
 38568  
 38569  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 38570  		return TCL_ERROR
 38571  	}
 38572  
 38573  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 38574  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 38575  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt64(int64(-1))
 38576  		}
 38577  	} else {
 38578  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt64(int64(-1)) {
 38579  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 38580  		}
 38581  	}
 38582  
 38583  	tcl.XTcl_ResetResult(tls, interp)
 38584  	return TCL_OK
 38585  }
 38586  
 38587  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38588  	bp := tls.Alloc(80)
 38589  	defer tls.Free(80)
 38590  
 38591  	var zSql1 uintptr
 38592  	var zSql2 uintptr
 38593  
 38594  	var iStep int32
 38595  	var iCksum1 uint32
 38596  	var iCksum2 uint32
 38597  	var rc int32
 38598  	var iB int32
 38599  
 38600  	var a int32
 38601  	var a1 int32
 38602  	iCksum1 = uint32(0)
 38603  	iCksum2 = uint32(0)
 38604  
 38605  	if !(objc != 5) {
 38606  		goto __1
 38607  	}
 38608  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18976)
 38609  	return TCL_ERROR
 38610  __1:
 38611  	;
 38612  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0) {
 38613  		goto __2
 38614  	}
 38615  	return TCL_ERROR
 38616  __2:
 38617  	;
 38618  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38619  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0) {
 38620  		goto __3
 38621  	}
 38622  	return TCL_ERROR
 38623  __3:
 38624  	;
 38625  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 38626  
 38627  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+72, uintptr(0))
 38628  	if !(rc != SQLITE_OK) {
 38629  		goto __4
 38630  	}
 38631  	goto sql_error
 38632  __4:
 38633  	;
 38634  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 72))) - 1
 38635  	iStep = 0
 38636  __5:
 38637  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 64)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 38638  		goto __7
 38639  	}
 38640  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 38641  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), iB)) {
 38642  		goto __8
 38643  	}
 38644  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18995, 0))
 38645  	return TCL_ERROR
 38646  __8:
 38647  	;
 38648  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 38649  	goto __6
 38650  __6:
 38651  	iStep++
 38652  	goto __5
 38653  	goto __7
 38654  __7:
 38655  	;
 38656  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38657  	if !(rc != SQLITE_OK) {
 38658  		goto __9
 38659  	}
 38660  	goto sql_error
 38661  __9:
 38662  	;
 38663  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+72, uintptr(0))
 38664  	if !(rc != SQLITE_OK) {
 38665  		goto __10
 38666  	}
 38667  	goto sql_error
 38668  __10:
 38669  	;
 38670  	iStep = 0
 38671  __11:
 38672  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 38673  		goto __13
 38674  	}
 38675  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 38676  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 38677  	goto __12
 38678  __12:
 38679  	iStep++
 38680  	goto __11
 38681  	goto __13
 38682  __13:
 38683  	;
 38684  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38685  	if !(rc != SQLITE_OK) {
 38686  		goto __14
 38687  	}
 38688  	goto sql_error
 38689  __14:
 38690  	;
 38691  	if !(iCksum1 != iCksum2) {
 38692  		goto __15
 38693  	}
 38694  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19014, 0))
 38695  	return TCL_ERROR
 38696  __15:
 38697  	;
 38698  	return TCL_OK
 38699  sql_error:
 38700  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19032, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 38701  	return TCL_ERROR
 38702  }
 38703  
 38704  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38705  	bp := tls.Alloc(44)
 38706  	defer tls.Free(44)
 38707  
 38708  	var xyz int32
 38709  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 38710  	var j int32
 38711  
 38712  	var a uintptr
 38713  	if objc != 2 {
 38714  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19044)
 38715  		return TCL_ERROR
 38716  	}
 38717  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 38718  		return TCL_ERROR
 38719  	}
 38720  	switch *(*int32)(unsafe.Pointer(bp)) {
 38721  	case 1:
 38722  		{
 38723  			xyz = 0x7fffff00 - i
 38724  			xyz = xyz + 0x100
 38725  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 38726  			break
 38727  
 38728  		}
 38729  	case 2:
 38730  		{
 38731  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 38732  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 38733  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 38734  			}
 38735  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 38736  			break
 38737  
 38738  		}
 38739  	case 3:
 38740  		{
 38741  			a = libc.Xmalloc(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(10))
 38742  			for j = 0; j < 10; j++ {
 38743  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 38744  			}
 38745  			libc.Xfree(tls, a)
 38746  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 38747  			break
 38748  
 38749  		}
 38750  	case 4:
 38751  		{
 38752  			tcl.XTcl_Panic(tls, ts+19049, 0)
 38753  			break
 38754  
 38755  		}
 38756  	}
 38757  	return TCL_OK
 38758  }
 38759  
 38760  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38761  	bp := tls.Alloc(64)
 38762  	defer tls.Free(64)
 38763  
 38764  	var zDb uintptr
 38765  
 38766  	if objc != 2 {
 38767  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38768  		return TCL_ERROR
 38769  	}
 38770  
 38771  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38772  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 38773  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 38774  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 38775  	}
 38776  	return TCL_OK
 38777  }
 38778  
 38779  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38780  	bp := tls.Alloc(28)
 38781  	defer tls.Free(28)
 38782  
 38783  	var i int32
 38784  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 38785  	var zSetting uintptr
 38786  
 38787  	if objc != 4 && objc != 3 {
 38788  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19066)
 38789  		return TCL_ERROR
 38790  	}
 38791  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 38792  		return TCL_ERROR
 38793  	}
 38794  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38795  	if sqlite3.Xsqlite3_strglob(tls, ts+19085, zSetting) == 0 {
 38796  		zSetting += uintptr(7)
 38797  	}
 38798  	if sqlite3.Xsqlite3_strglob(tls, ts+19094, zSetting) == 0 {
 38799  		zSetting += uintptr(9)
 38800  	}
 38801  	if sqlite3.Xsqlite3_strglob(tls, ts+19105, zSetting) == 0 {
 38802  		zSetting += uintptr(7)
 38803  	}
 38804  	for i = 0; i < int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 38805  		FzName       uintptr
 38806  		FeVal        int32
 38807  		F__ccgo_pad1 [4]byte
 38808  	}{}))); i++ {
 38809  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 38810  			break
 38811  		}
 38812  	}
 38813  	if i >= int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 38814  		FzName       uintptr
 38815  		FeVal        int32
 38816  		F__ccgo_pad1 [4]byte
 38817  	}{}))) {
 38818  		tcl.XTcl_SetObjResult(tls, interp,
 38819  			tcl.XTcl_NewStringObj(tls, ts+19114, -1))
 38820  		return TCL_ERROR
 38821  	}
 38822  	if objc == 4 {
 38823  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 38824  			return TCL_ERROR
 38825  		}
 38826  	} else {
 38827  		*(*int32)(unsafe.Pointer(bp + 24)) = -1
 38828  	}
 38829  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 24)), bp+24))
 38830  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 38831  	return TCL_OK
 38832  }
 38833  
 38834  var aSetting = [14]struct {
 38835  	FzName       uintptr
 38836  	FeVal        int32
 38837  	F__ccgo_pad1 [4]byte
 38838  }{
 38839  	{FzName: ts + 19148, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 38840  	{FzName: ts + 19153, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 38841  	{FzName: ts + 19161, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 38842  	{FzName: ts + 19176, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 38843  	{FzName: ts + 19191, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 38844  	{FzName: ts + 19208, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 38845  	{FzName: ts + 19213, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 38846  	{FzName: ts + 19225, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 38847  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 38848  	{FzName: ts + 19244, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 38849  	{FzName: ts + 19260, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 38850  	{FzName: ts + 19279, FeVal: SQLITE_DBCONFIG_DQS_DML},
 38851  	{FzName: ts + 19287, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 38852  	{FzName: ts + 19295, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 38853  }
 38854  
 38855  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38856  	bp := tls.Alloc(8)
 38857  	defer tls.Free(8)
 38858  
 38859  	var zSchema uintptr
 38860  	var iTxn int32
 38861  
 38862  	if objc != 2 && objc != 3 {
 38863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19314)
 38864  		return TCL_ERROR
 38865  	}
 38866  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38867  		return TCL_ERROR
 38868  	}
 38869  	if objc == 3 {
 38870  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38871  	} else {
 38872  		zSchema = uintptr(0)
 38873  	}
 38874  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 38875  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 38876  	return TCL_OK
 38877  }
 38878  
 38879  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38880  	bp := tls.Alloc(16)
 38881  	defer tls.Free(16)
 38882  
 38883  	var rc int32
 38884  
 38885  	if objc != 2 {
 38886  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38887  		return TCL_ERROR
 38888  	} else {
 38889  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 38890  			return TCL_ERROR
 38891  		}
 38892  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19326))
 38893  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38894  		return TCL_OK
 38895  	}
 38896  	return int32(0)
 38897  }
 38898  
 38899  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38900  	bp := tls.Alloc(8)
 38901  	defer tls.Free(8)
 38902  
 38903  	if objc != 2 && objc != 3 {
 38904  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19334)
 38905  		return TCL_ERROR
 38906  	} else {
 38907  		var rc int32
 38908  
 38909  		var zDb uintptr = uintptr(0)
 38910  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38911  			return TCL_ERROR
 38912  		}
 38913  		if objc == 3 {
 38914  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38915  		}
 38916  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 38917  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 38918  		return TCL_OK
 38919  	}
 38920  	return int32(0)
 38921  }
 38922  
 38923  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38924  	bp := tls.Alloc(32)
 38925  	defer tls.Free(32)
 38926  
 38927  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 38928  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 8)) = int64(0)
 38929  	var aData uintptr = uintptr(0)
 38930  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 38931  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 38932  	var rc int32
 38933  
 38934  	if objc != 4 {
 38935  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19346)
 38936  		return TCL_ERROR
 38937  	}
 38938  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38939  		return TCL_ERROR
 38940  	}
 38941  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38942  		return TCL_ERROR
 38943  	}
 38944  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16)
 38945  
 38946  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 38947  	rc = (*struct {
 38948  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 38949  	})(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)))
 38950  
 38951  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38952  	return TCL_OK
 38953  }
 38954  
 38955  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38956  	if objc != 1 {
 38957  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38958  		return TCL_ERROR
 38959  	} else {
 38960  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 38961  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38962  	}
 38963  	return TCL_OK
 38964  }
 38965  
 38966  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38967  	if objc != 1 {
 38968  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38969  		return TCL_ERROR
 38970  	} else {
 38971  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 38972  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38973  	}
 38974  	return TCL_OK
 38975  }
 38976  
 38977  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38978  	bp := tls.Alloc(296)
 38979  	defer tls.Free(296)
 38980  
 38981  	var zIn uintptr = uintptr(0)
 38982  	var a uintptr = uintptr(0)
 38983  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 38984  	var lineno int32 = 0
 38985  	var i int32
 38986  	var iNext int32
 38987  	var iOffset int32 = 0
 38988  
 38989  	var rc int32
 38990  
 38991  	if objc != 2 {
 38992  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19361)
 38993  		return TCL_ERROR
 38994  	}
 38995  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38996  	for i = 0; *(*uint8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 38997  		lineno++
 38998  		for iNext = i; *(*uint8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 38999  		}
 39000  		if int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 39001  			iNext++
 39002  		}
 39003  		for int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 39004  			i++
 39005  		}
 39006  		if a == uintptr(0) {
 39007  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19367, libc.VaList(bp, bp+216, bp+220))
 39008  			if rc != 2 {
 39009  				continue
 39010  			}
 39011  			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 {
 39012  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19389, uintptr(0)))
 39013  				return TCL_ERROR
 39014  			}
 39015  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 39016  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 39017  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19410, uintptr(0)))
 39018  				return TCL_ERROR
 39019  			}
 39020  			a = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 39021  			if a == uintptr(0) {
 39022  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 39023  				return TCL_ERROR
 39024  			}
 39025  			libc.Xmemset(tls, a, 0, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 39026  			continue
 39027  		}
 39028  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19427, libc.VaList(bp+64, bp+224, bp+228))
 39029  		if rc == 2 {
 39030  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 39031  			continue
 39032  		}
 39033  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19447,
 39034  			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,
 39035  				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))
 39036  		if rc == 17 {
 39037  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 39038  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 39039  				var ii int32
 39040  				for ii = 0; ii < 16; ii++ {
 39041  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 39042  				}
 39043  			}
 39044  			continue
 39045  		}
 39046  	}
 39047  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 39048  	libc.Xfree(tls, a)
 39049  	return TCL_OK
 39050  }
 39051  
 39052  type AutovacPageData1 = struct {
 39053  	Finterp  uintptr
 39054  	FzScript uintptr
 39055  }
 39056  
 39057  type AutovacPageData = AutovacPageData1
 39058  
 39059  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 39060  	bp := tls.Alloc(344)
 39061  	defer tls.Free(344)
 39062  
 39063  	var pData uintptr = pClientData
 39064  
 39065  	tcl.XTcl_DStringInit(tls, bp+24)
 39066  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 39067  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 39068  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+240, ts+17791, libc.VaList(bp, nFilePages))
 39069  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 39070  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+240, ts+17791, libc.VaList(bp+8, nFreePages))
 39071  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 39072  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+240, ts+17791, libc.VaList(bp+16, nBytePerPage))
 39073  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 39074  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 39075  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 39076  	tcl.XTcl_DStringFree(tls, bp+24)
 39077  	*(*uint32)(unsafe.Pointer(bp + 340)) = nFreePages
 39078  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+340)
 39079  	return *(*uint32)(unsafe.Pointer(bp + 340))
 39080  }
 39081  
 39082  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 39083  	bp := tls.Alloc(1048)
 39084  	defer tls.Free(1048)
 39085  
 39086  	var pData uintptr
 39087  
 39088  	var rc int32
 39089  	var zScript uintptr
 39090  	if objc != 2 && objc != 3 {
 39091  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19501)
 39092  		return TCL_ERROR
 39093  	}
 39094  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) != 0 {
 39095  		return TCL_ERROR
 39096  	}
 39097  	if objc == 3 {
 39098  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 39099  	} else {
 39100  		zScript = uintptr(0)
 39101  	}
 39102  	if zScript != 0 {
 39103  		var nScript size_t = libc.Xstrlen(tls, zScript)
 39104  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(AutovacPageData{}))+nScript+uint64(1))
 39105  		if pData == uintptr(0) {
 39106  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 39107  			return TCL_ERROR
 39108  		}
 39109  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 39110  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*16
 39111  		libc.Xmemcpy(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+uint64(1))
 39112  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 39113  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 39114  		}{test_autovacuum_pages_callback})),
 39115  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 39116  	} else {
 39117  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 39118  	}
 39119  	if rc != 0 {
 39120  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]uint8{})), bp+48,
 39121  			ts+19513, libc.VaList(bp+16, rc))
 39122  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 39123  		return TCL_ERROR
 39124  	}
 39125  	return TCL_OK
 39126  }
 39127  
 39128  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 39129  	var i int32
 39130  
 39131  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd1))/uint64(unsafe.Sizeof(struct {
 39132  		FzName uintptr
 39133  		FxProc uintptr
 39134  	}{})); i++ {
 39135  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 39136  	}
 39137  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd1))/uint64(unsafe.Sizeof(struct {
 39138  		FzName      uintptr
 39139  		FxProc      uintptr
 39140  		FclientData uintptr
 39141  	}{})); i++ {
 39142  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 39143  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 39144  	}
 39145  	tcl.XTcl_LinkVar(tls, interp, ts+19551,
 39146  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 39147  	tcl.XTcl_LinkVar(tls, interp, ts+19571,
 39148  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 39149  	tcl.XTcl_LinkVar(tls, interp, ts+19590,
 39150  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 39151  	tcl.XTcl_LinkVar(tls, interp, ts+19608,
 39152  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 39153  	tcl.XTcl_LinkVar(tls, interp, ts+19629,
 39154  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 39155  	tcl.XTcl_LinkVar(tls, interp, ts+19647,
 39156  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 39157  	tcl.XTcl_LinkVar(tls, interp, ts+19670,
 39158  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 39159  	tcl.XTcl_LinkVar(tls, interp, ts+19693,
 39160  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 39161  	tcl.XTcl_LinkVar(tls, interp, ts+19713,
 39162  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 39163  	tcl.XTcl_LinkVar(tls, interp, ts+19735,
 39164  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 39165  	tcl.XTcl_LinkVar(tls, interp, ts+19762,
 39166  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 39167  	tcl.XTcl_LinkVar(tls, interp, ts+19790,
 39168  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 39169  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 39170  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 39171  	tcl.XTcl_LinkVar(tls, interp, ts+19842,
 39172  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 39173  	{
 39174  		tcl.XTcl_LinkVar(tls, interp, ts+19871,
 39175  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 39176  
 39177  	}
 39178  	tcl.XTcl_LinkVar(tls, interp, ts+19889,
 39179  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 39180  	tcl.XTcl_LinkVar(tls, interp, ts+19911,
 39181  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 39182  	tcl.XTcl_LinkVar(tls, interp, ts+19936,
 39183  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 39184  	tcl.XTcl_LinkVar(tls, interp, ts+19961,
 39185  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 39186  	tcl.XTcl_LinkVar(tls, interp, ts+19983,
 39187  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 39188  	tcl.XTcl_LinkVar(tls, interp, ts+20005,
 39189  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39190  	tcl.XTcl_LinkVar(tls, interp, ts+20018,
 39191  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39192  	tcl.XTcl_LinkVar(tls, interp, ts+20034,
 39193  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 39194  	tcl.XTcl_LinkVar(tls, interp, ts+20052,
 39195  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 39196  	return TCL_OK
 39197  }
 39198  
 39199  var iZero int32 = 0
 39200  var aCmd1 = [39]struct {
 39201  	FzName uintptr
 39202  	FxProc uintptr
 39203  }{
 39204  	{FzName: ts + 20074, FxProc: 0},
 39205  	{FzName: ts + 20083, FxProc: 0},
 39206  	{FzName: ts + 20092, FxProc: 0},
 39207  	{FzName: ts + 20112, FxProc: 0},
 39208  	{FzName: ts + 20134, FxProc: 0},
 39209  	{FzName: ts + 20155, FxProc: 0},
 39210  	{FzName: ts + 20175, FxProc: 0},
 39211  	{FzName: ts + 20196, FxProc: 0},
 39212  	{FzName: ts + 20220, FxProc: 0},
 39213  	{FzName: ts + 20243, FxProc: 0},
 39214  	{FzName: ts + 20266, FxProc: 0},
 39215  	{FzName: ts + 20292, FxProc: 0},
 39216  	{FzName: ts + 20315, FxProc: 0},
 39217  	{FzName: ts + 20338, FxProc: 0},
 39218  	{FzName: ts + 20359, FxProc: 0},
 39219  	{FzName: ts + 20385, FxProc: 0},
 39220  	{FzName: ts + 20405, FxProc: 0},
 39221  	{FzName: ts + 20422, FxProc: 0},
 39222  	{FzName: ts + 20435, FxProc: 0},
 39223  	{FzName: ts + 20451, FxProc: 0},
 39224  	{FzName: ts + 20476, FxProc: 0},
 39225  	{FzName: ts + 20490, FxProc: 0},
 39226  	{FzName: ts + 20507, FxProc: 0},
 39227  	{FzName: ts + 20531, FxProc: 0},
 39228  	{FzName: ts + 20556, FxProc: 0},
 39229  	{FzName: ts + 20577, FxProc: 0},
 39230  	{FzName: ts + 20607, FxProc: 0},
 39231  	{FzName: ts + 20620, FxProc: 0},
 39232  	{FzName: ts + 20632, FxProc: 0},
 39233  	{FzName: ts + 20643, FxProc: 0},
 39234  	{FzName: ts + 20655, FxProc: 0},
 39235  	{FzName: ts + 20669, FxProc: 0},
 39236  	{FzName: ts + 20687, FxProc: 0},
 39237  	{FzName: ts + 20710, FxProc: 0},
 39238  	{FzName: ts + 20734, FxProc: 0},
 39239  	{FzName: ts + 20757, FxProc: 0},
 39240  	{FzName: ts + 20778, FxProc: 0},
 39241  	{FzName: ts + 20785, FxProc: 0},
 39242  	{FzName: ts + 20800, FxProc: 0},
 39243  }
 39244  var aObjCmd1 = [165]struct {
 39245  	FzName      uintptr
 39246  	FxProc      uintptr
 39247  	FclientData uintptr
 39248  }{
 39249  	{FzName: ts + 20823, FxProc: 0},
 39250  	{FzName: ts + 20841, FxProc: 0},
 39251  	{FzName: ts + 20859, FxProc: 0, FclientData: 0},
 39252  	{FzName: ts + 20872, FxProc: 0},
 39253  	{FzName: ts + 20893, FxProc: 0},
 39254  	{FzName: ts + 20920, FxProc: 0},
 39255  	{FzName: ts + 20934, FxProc: 0},
 39256  	{FzName: ts + 20950, FxProc: 0},
 39257  	{FzName: ts + 20967, FxProc: 0},
 39258  	{FzName: ts + 20982, FxProc: 0},
 39259  	{FzName: ts + 20999, FxProc: 0},
 39260  	{FzName: ts + 21021, FxProc: 0},
 39261  	{FzName: ts + 21045, FxProc: 0},
 39262  	{FzName: ts + 21064, FxProc: 0},
 39263  	{FzName: ts + 21084, FxProc: 0},
 39264  	{FzName: ts + 21102, FxProc: 0},
 39265  	{FzName: ts + 21120, FxProc: 0},
 39266  	{FzName: ts + 21140, FxProc: 0},
 39267  	{FzName: ts + 21158, FxProc: 0},
 39268  	{FzName: ts + 21189, FxProc: 0},
 39269  	{FzName: ts + 21223, FxProc: 0},
 39270  	{FzName: ts + 21243, FxProc: 0},
 39271  	{FzName: ts + 21272, FxProc: 0},
 39272  	{FzName: ts + 21300, FxProc: 0},
 39273  	{FzName: ts + 21329, FxProc: 0},
 39274  	{FzName: ts + 21352, FxProc: 0},
 39275  	{FzName: ts + 21366, FxProc: 0},
 39276  	{FzName: ts + 21382, FxProc: 0},
 39277  	{FzName: ts + 21407, FxProc: 0},
 39278  	{FzName: ts + 21422, FxProc: 0},
 39279  	{FzName: ts + 21443, FxProc: 0},
 39280  	{FzName: ts + 21460, FxProc: 0},
 39281  	{FzName: ts + 21473, FxProc: 0},
 39282  	{FzName: ts + 21488, FxProc: 0},
 39283  	{FzName: ts + 21504, FxProc: 0},
 39284  	{FzName: ts + 21523, FxProc: 0},
 39285  	{FzName: ts + 21541, FxProc: 0},
 39286  	{FzName: ts + 21557, FxProc: 0},
 39287  	{FzName: ts + 21575, FxProc: 0},
 39288  	{FzName: ts + 21594, FxProc: 0},
 39289  	{FzName: ts + 21613, FxProc: 0},
 39290  	{FzName: ts + 21637, FxProc: 0},
 39291  	{FzName: ts + 21658, FxProc: 0},
 39292  	{FzName: ts + 21675, FxProc: 0},
 39293  	{FzName: ts + 21695, FxProc: 0},
 39294  	{FzName: ts + 21709, FxProc: 0},
 39295  	{FzName: ts + 21725, FxProc: 0},
 39296  	{FzName: ts + 21751, FxProc: 0},
 39297  	{FzName: ts + 21767, FxProc: 0},
 39298  	{FzName: ts + 21780, FxProc: 0},
 39299  	{FzName: ts + 21792, FxProc: 0},
 39300  	{FzName: ts + 21813, FxProc: 0},
 39301  	{FzName: ts + 21831, FxProc: 0},
 39302  	{FzName: ts + 21853, FxProc: 0},
 39303  	{FzName: ts + 21876, FxProc: 0},
 39304  	{FzName: ts + 21894, FxProc: 0},
 39305  	{FzName: ts + 21912, FxProc: 0},
 39306  	{FzName: ts + 21935, FxProc: 0},
 39307  	{FzName: ts + 21961, FxProc: 0},
 39308  	{FzName: ts + 21983, FxProc: 0},
 39309  	{FzName: ts + 22004, FxProc: 0},
 39310  	{FzName: ts + 22024, FxProc: 0},
 39311  	{FzName: ts + 22044, FxProc: 0},
 39312  	{FzName: ts + 22068, FxProc: 0},
 39313  	{FzName: ts + 22094, FxProc: 0},
 39314  	{FzName: ts + 22120, FxProc: 0},
 39315  	{FzName: ts + 22143, FxProc: 0},
 39316  	{FzName: ts + 22167, FxProc: 0},
 39317  	{FzName: ts + 22190, FxProc: 0},
 39318  	{FzName: ts + 22220, FxProc: 0},
 39319  	{FzName: ts + 22250, FxProc: 0},
 39320  	{FzName: ts + 22264, FxProc: 0},
 39321  	{FzName: ts + 22292, FxProc: 0},
 39322  	{FzName: ts + 22308, FxProc: 0},
 39323  	{FzName: ts + 22327, FxProc: 0},
 39324  	{FzName: ts + 22344, FxProc: 0},
 39325  	{FzName: ts + 22354, FxProc: 0},
 39326  	{FzName: ts + 22374, FxProc: 0},
 39327  	{FzName: ts + 22397, FxProc: 0},
 39328  	{FzName: ts + 22421, FxProc: 0},
 39329  	{FzName: ts + 22442, FxProc: 0},
 39330  	{FzName: ts + 22454, FxProc: 0},
 39331  	{FzName: ts + 22475, FxProc: 0},
 39332  	{FzName: ts + 22494, FxProc: 0},
 39333  	{FzName: ts + 22514, FxProc: 0},
 39334  	{FzName: ts + 22534, FxProc: 0},
 39335  	{FzName: ts + 22556, FxProc: 0},
 39336  	{FzName: ts + 22577, FxProc: 0, FclientData: 0},
 39337  	{FzName: ts + 22597, FxProc: 0, FclientData: 0},
 39338  	{FzName: ts + 22617, FxProc: 0, FclientData: 0},
 39339  	{FzName: ts + 22636, FxProc: 0, FclientData: 0},
 39340  	{FzName: ts + 22657, FxProc: 0, FclientData: 0},
 39341  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 39342  	{FzName: ts + 22710, FxProc: 0, FclientData: 0},
 39343  	{FzName: ts + 22736, FxProc: 0, FclientData: 0},
 39344  	{FzName: ts + 22763, FxProc: 0, FclientData: 0},
 39345  	{FzName: ts + 22786, FxProc: 0, FclientData: 0},
 39346  	{FzName: ts + 22808, FxProc: 0, FclientData: 0},
 39347  	{FzName: ts + 22830, FxProc: 0},
 39348  	{FzName: ts + 22860, FxProc: 0, FclientData: 0},
 39349  	{FzName: ts + 22886,
 39350  		FxProc: 0, FclientData: 0},
 39351  	{FzName: ts + 22917, FxProc: 0, FclientData: 0},
 39352  	{FzName: ts + 22945, FxProc: 0, FclientData: 0},
 39353  	{FzName: ts + 22974, FxProc: 0},
 39354  	{FzName: ts + 23002, FxProc: 0},
 39355  	{FzName: ts + 23025, FxProc: 0},
 39356  	{FzName: ts + 23043, FxProc: 0},
 39357  	{FzName: ts + 23059, FxProc: 0},
 39358  	{FzName: ts + 23077, FxProc: 0},
 39359  	{FzName: ts + 23096, FxProc: 0},
 39360  	{FzName: ts + 23115, FxProc: 0},
 39361  	{FzName: ts + 23133, FxProc: 0},
 39362  	{FzName: ts + 23161, FxProc: 0},
 39363  	{FzName: ts + 23189, FxProc: 0},
 39364  	{FzName: ts + 23217, FxProc: 0},
 39365  	{FzName: ts + 23244, FxProc: 0},
 39366  	{FzName: ts + 23270, FxProc: 0},
 39367  	{FzName: ts + 23295, FxProc: 0},
 39368  	{FzName: ts + 23328, FxProc: 0},
 39369  	{FzName: ts + 23349, FxProc: 0},
 39370  	{FzName: ts + 23375, FxProc: 0},
 39371  	{FzName: ts + 23401, FxProc: 0},
 39372  	{FzName: ts + 23430, FxProc: 0},
 39373  	{FzName: ts + 23447, FxProc: 0},
 39374  	{FzName: ts + 23474, FxProc: 0},
 39375  	{FzName: ts + 23491, FxProc: 0},
 39376  	{FzName: ts + 23515, FxProc: 0},
 39377  	{FzName: ts + 23533, FxProc: 0},
 39378  	{FzName: ts + 23559, FxProc: 0},
 39379  	{FzName: ts + 23579, FxProc: 0},
 39380  	{FzName: ts + 23597, FxProc: 0},
 39381  	{FzName: ts + 23625, FxProc: 0},
 39382  	{FzName: ts + 23653, FxProc: 0},
 39383  	{FzName: ts + 23679, FxProc: 0},
 39384  	{FzName: ts + 23709, FxProc: 0},
 39385  	{FzName: ts + 23729, FxProc: 0},
 39386  	{FzName: ts + 23742, FxProc: 0},
 39387  	{FzName: ts + 23764, FxProc: 0},
 39388  	{FzName: ts + 23787, FxProc: 0},
 39389  	{FzName: ts + 23813, FxProc: 0},
 39390  	{FzName: ts + 23840, FxProc: 0},
 39391  	{FzName: ts + 23857, FxProc: 0},
 39392  	{FzName: ts + 23882, FxProc: 0},
 39393  	{FzName: ts + 23903, FxProc: 0},
 39394  	{FzName: ts + 23913, FxProc: 0},
 39395  	{FzName: ts + 23935, FxProc: 0},
 39396  	{FzName: ts + 23956, FxProc: 0},
 39397  	{FzName: ts + 23981, FxProc: 0},
 39398  	{FzName: ts + 24004, FxProc: 0},
 39399  	{FzName: ts + 24025, FxProc: 0},
 39400  	{FzName: ts + 24047, FxProc: 0},
 39401  	{FzName: ts + 24069, FxProc: 0},
 39402  	{FzName: ts + 24090, FxProc: 0},
 39403  	{FzName: ts + 24115, FxProc: 0},
 39404  	{FzName: ts + 24141, FxProc: 0},
 39405  	{FzName: ts + 24168, FxProc: 0},
 39406  	{FzName: ts + 24194, FxProc: 0},
 39407  	{FzName: ts + 24218, FxProc: 0},
 39408  	{FzName: ts + 24237, FxProc: 0},
 39409  	{FzName: ts + 24255, FxProc: 0},
 39410  	{FzName: ts + 24280, FxProc: 0},
 39411  	{FzName: ts + 24305, FxProc: 0},
 39412  	{FzName: ts + 24318, FxProc: 0},
 39413  	{FzName: ts + 24332, FxProc: 0},
 39414  	{FzName: ts + 24358, FxProc: 0},
 39415  }
 39416  var bitmask_size int32 = int32(uint64(unsafe.Sizeof(Bitmask(0))) * uint64(8))
 39417  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 39418  var query_plan uintptr = ts + 24386
 39419  
 39420  var test_pagesize int32 = 1024
 39421  
 39422  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 39423  	return
 39424  }
 39425  
 39426  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39427  	bp := tls.Alloc(192)
 39428  	defer tls.Free(192)
 39429  
 39430  	var rc int32
 39431  
 39432  	if argc != 3 {
 39433  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39434  			ts+24412, 0))
 39435  		return TCL_ERROR
 39436  	}
 39437  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39438  		return TCL_ERROR
 39439  	}
 39440  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+80, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, 0,
 39441  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 39442  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 39443  	if rc != SQLITE_OK {
 39444  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39445  		return TCL_ERROR
 39446  	}
 39447  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 39448  	*(*u32)(unsafe.Pointer(bp + 88)) = u32(test_pagesize)
 39449  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), bp+88, -1)
 39450  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+92, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39451  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, 0))
 39452  	return TCL_OK
 39453  }
 39454  
 39455  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39456  	bp := tls.Alloc(48)
 39457  	defer tls.Free(48)
 39458  
 39459  	var pPager uintptr
 39460  	var rc int32
 39461  	if argc != 2 {
 39462  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39463  			ts+24430, 0))
 39464  		return TCL_ERROR
 39465  	}
 39466  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39467  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 39468  	if rc != SQLITE_OK {
 39469  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39470  		return TCL_ERROR
 39471  	}
 39472  	return TCL_OK
 39473  }
 39474  
 39475  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39476  	bp := tls.Alloc(48)
 39477  	defer tls.Free(48)
 39478  
 39479  	var pPager uintptr
 39480  	var rc int32
 39481  	if argc != 2 {
 39482  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39483  			ts+24430, 0))
 39484  		return TCL_ERROR
 39485  	}
 39486  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39487  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 39488  	if rc != SQLITE_OK {
 39489  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39490  		return TCL_ERROR
 39491  	}
 39492  	return TCL_OK
 39493  }
 39494  
 39495  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39496  	bp := tls.Alloc(64)
 39497  	defer tls.Free(64)
 39498  
 39499  	var pPager uintptr
 39500  	var rc int32
 39501  	if argc != 2 {
 39502  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39503  			ts+24430, 0))
 39504  		return TCL_ERROR
 39505  	}
 39506  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39507  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 39508  	if rc != SQLITE_OK {
 39509  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39510  		return TCL_ERROR
 39511  	}
 39512  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 39513  	if rc != SQLITE_OK {
 39514  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39515  		return TCL_ERROR
 39516  	}
 39517  	return TCL_OK
 39518  }
 39519  
 39520  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39521  	bp := tls.Alloc(48)
 39522  	defer tls.Free(48)
 39523  
 39524  	var pPager uintptr
 39525  	var rc int32
 39526  	if argc != 2 {
 39527  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39528  			ts+24430, 0))
 39529  		return TCL_ERROR
 39530  	}
 39531  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39532  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 39533  	if rc != SQLITE_OK {
 39534  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39535  		return TCL_ERROR
 39536  	}
 39537  	return TCL_OK
 39538  }
 39539  
 39540  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39541  	bp := tls.Alloc(48)
 39542  	defer tls.Free(48)
 39543  
 39544  	var pPager uintptr
 39545  	var rc int32
 39546  	if argc != 2 {
 39547  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39548  			ts+24430, 0))
 39549  		return TCL_ERROR
 39550  	}
 39551  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39552  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 39553  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39554  	if rc != SQLITE_OK {
 39555  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39556  		return TCL_ERROR
 39557  	}
 39558  	return TCL_OK
 39559  }
 39560  
 39561  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39562  	bp := tls.Alloc(48)
 39563  	defer tls.Free(48)
 39564  
 39565  	var pPager uintptr
 39566  	var rc int32
 39567  	if argc != 2 {
 39568  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39569  			ts+24430, 0))
 39570  		return TCL_ERROR
 39571  	}
 39572  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39573  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39574  	if rc != SQLITE_OK {
 39575  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39576  		return TCL_ERROR
 39577  	}
 39578  	return TCL_OK
 39579  }
 39580  
 39581  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39582  	bp := tls.Alloc(140)
 39583  	defer tls.Free(140)
 39584  
 39585  	var pPager uintptr
 39586  	var i int32
 39587  	var a uintptr
 39588  	if argc != 2 {
 39589  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39590  			ts+24430, 0))
 39591  		return TCL_ERROR
 39592  	}
 39593  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39594  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 39595  	for i = 0; i < 9; i++ {
 39596  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 39597  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39598  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39599  	}
 39600  	return TCL_OK
 39601  }
 39602  
 39603  var zName = [9]uintptr{
 39604  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39605  	ts + 24448, ts + 24452, ts + 24457,
 39606  }
 39607  
 39608  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39609  	bp := tls.Alloc(160)
 39610  	defer tls.Free(160)
 39611  
 39612  	var pPager uintptr
 39613  
 39614  	if argc != 2 {
 39615  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39616  			ts+24430, 0))
 39617  		return TCL_ERROR
 39618  	}
 39619  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39620  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 39621  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 39622  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39623  	return TCL_OK
 39624  }
 39625  
 39626  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39627  	bp := tls.Alloc(188)
 39628  	defer tls.Free(188)
 39629  
 39630  	var pPager uintptr
 39631  
 39632  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 39633  
 39634  	var rc int32
 39635  	if argc != 3 {
 39636  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39637  			ts+24462, 0))
 39638  		return TCL_ERROR
 39639  	}
 39640  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39641  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39642  		return TCL_ERROR
 39643  	}
 39644  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 39645  	if rc == SQLITE_OK {
 39646  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+80, 0)
 39647  	}
 39648  	if rc != SQLITE_OK {
 39649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39650  		return TCL_ERROR
 39651  	}
 39652  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39653  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 39654  	return TCL_OK
 39655  }
 39656  
 39657  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39658  	bp := tls.Alloc(160)
 39659  	defer tls.Free(160)
 39660  
 39661  	var pPager uintptr
 39662  
 39663  	var pPage uintptr
 39664  
 39665  	if argc != 3 {
 39666  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39667  			ts+24462, 0))
 39668  		return TCL_ERROR
 39669  	}
 39670  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39671  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 39672  		return TCL_ERROR
 39673  	}
 39674  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 39675  	if pPage != 0 {
 39676  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 39677  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39678  	}
 39679  	return TCL_OK
 39680  }
 39681  
 39682  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39683  	bp := tls.Alloc(36)
 39684  	defer tls.Free(36)
 39685  
 39686  	var pPager uintptr
 39687  
 39688  	if argc != 3 {
 39689  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39690  			ts+24462, 0))
 39691  		return TCL_ERROR
 39692  	}
 39693  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39694  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 39695  		return TCL_ERROR
 39696  	}
 39697  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 39698  	return TCL_OK
 39699  }
 39700  
 39701  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39702  	bp := tls.Alloc(32)
 39703  	defer tls.Free(32)
 39704  
 39705  	var pPage uintptr
 39706  	if argc != 2 {
 39707  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39708  			ts+24472, 0))
 39709  		return TCL_ERROR
 39710  	}
 39711  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39712  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 39713  	return TCL_OK
 39714  }
 39715  
 39716  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39717  	bp := tls.Alloc(148)
 39718  	defer tls.Free(148)
 39719  
 39720  	var pPage uintptr
 39721  	if argc != 2 {
 39722  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39723  			ts+24472, 0))
 39724  		return TCL_ERROR
 39725  	}
 39726  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39727  	libc.Xmemcpy(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint64(unsafe.Sizeof([100]uint8{})))
 39728  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 39729  	return TCL_OK
 39730  }
 39731  
 39732  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39733  	bp := tls.Alloc(156)
 39734  	defer tls.Free(156)
 39735  
 39736  	var pPage uintptr
 39737  	if argc != 2 {
 39738  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39739  			ts+24472, 0))
 39740  		return TCL_ERROR
 39741  	}
 39742  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39743  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 39744  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39745  	return TCL_OK
 39746  }
 39747  
 39748  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39749  	bp := tls.Alloc(48)
 39750  	defer tls.Free(48)
 39751  
 39752  	var pPage uintptr
 39753  	var pData uintptr
 39754  	var rc int32
 39755  	if argc != 3 {
 39756  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39757  			ts+24479, 0))
 39758  		return TCL_ERROR
 39759  	}
 39760  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39761  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 39762  	if rc != SQLITE_OK {
 39763  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39764  		return TCL_ERROR
 39765  	}
 39766  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 39767  	libc.Xstrncpy(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(test_pagesize-1))
 39768  	*(*uint8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = uint8(0)
 39769  	return TCL_OK
 39770  }
 39771  
 39772  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39773  	bp := tls.Alloc(96)
 39774  	defer tls.Free(96)
 39775  
 39776  	var pVfs uintptr
 39777  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 39778  	var rc int32
 39779  
 39780  	var offset i64
 39781  	var zFile uintptr
 39782  	var nFile int32
 39783  	if argc != 3 {
 39784  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39785  			ts+24491, 0))
 39786  		return TCL_ERROR
 39787  	}
 39788  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 39789  		return TCL_ERROR
 39790  	}
 39791  
 39792  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39793  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 39794  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 39795  	if zFile == uintptr(0) {
 39796  		return TCL_ERROR
 39797  	}
 39798  	libc.Xmemcpy(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(nFile+1))
 39799  	*(*uint8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = uint8(0)
 39800  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+88,
 39801  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 39802  	if rc != 0 {
 39803  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24510, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39804  		sqlite3.Xsqlite3_free(tls, zFile)
 39805  		return TCL_ERROR
 39806  	}
 39807  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 39808  	offset = offset * int64(1024*1024)
 39809  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), ts+24524, 14, offset)
 39810  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 39811  	sqlite3.Xsqlite3_free(tls, zFile)
 39812  	if rc != 0 {
 39813  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24538, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39814  		return TCL_ERROR
 39815  	}
 39816  	return TCL_OK
 39817  }
 39818  
 39819  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39820  	bp := tls.Alloc(44)
 39821  	defer tls.Free(44)
 39822  
 39823  	var rc int32
 39824  	if argc != 2 {
 39825  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39826  			ts+24553, uintptr(0)))
 39827  		return TCL_ERROR
 39828  	}
 39829  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 39830  		return TCL_ERROR
 39831  	}
 39832  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 39833  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39834  	return TCL_OK
 39835  }
 39836  
 39837  var faultSimInterp uintptr = uintptr(0)
 39838  var faultSimScriptSize int32 = 0
 39839  var faultSimScript uintptr
 39840  
 39841  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 39842  	bp := tls.Alloc(38)
 39843  	defer tls.Free(38)
 39844  
 39845  	var i int32
 39846  	var isNeg int32
 39847  	var rc int32
 39848  	if x == 0 {
 39849  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint64(2))
 39850  	} else {
 39851  		if x < 0 {
 39852  			isNeg = 1
 39853  			x = -x
 39854  		} else {
 39855  			isNeg = 0
 39856  		}
 39857  		*(*uint8)(unsafe.Pointer(bp + 8 + 29)) = uint8(0)
 39858  		i = int32(uint64(unsafe.Sizeof([30]uint8{})) - uint64(2))
 39859  	__1:
 39860  		if !(i > 0 && x > 0) {
 39861  			goto __3
 39862  		}
 39863  		{
 39864  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i))) = uint8(x%10 + '0')
 39865  
 39866  		}
 39867  		goto __2
 39868  	__2:
 39869  		i--
 39870  		x = x / 10
 39871  		goto __1
 39872  		goto __3
 39873  	__3:
 39874  		;
 39875  		if isNeg != 0 {
 39876  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = uint8('-')
 39877  		}
 39878  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint64(unsafe.Sizeof([30]uint8{}))-uint64(i))
 39879  	}
 39880  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 39881  	if rc != 0 {
 39882  		libc.Xfprintf(tls, libc.Xstderr, ts+24568, libc.VaList(bp, faultSimScript))
 39883  		rc = SQLITE_ERROR
 39884  	} else {
 39885  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 39886  	}
 39887  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 39888  	return rc
 39889  }
 39890  
 39891  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39892  	bp := tls.Alloc(64)
 39893  	defer tls.Free(64)
 39894  
 39895  	var zScript uintptr
 39896  	var nScript int32
 39897  	var rc int32
 39898  	if argc != 1 && argc != 2 {
 39899  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39900  			ts+24604, uintptr(0)))
 39901  	}
 39902  	if argc == 2 {
 39903  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 39904  	} else {
 39905  		zScript = ts + 584
 39906  	}
 39907  	nScript = int32(libc.Xstrlen(tls, zScript))
 39908  	if faultSimScript != 0 {
 39909  		libc.Xfree(tls, faultSimScript)
 39910  		faultSimScript = uintptr(0)
 39911  	}
 39912  	if nScript == 0 {
 39913  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 39914  	} else {
 39915  		faultSimScript = libc.Xmalloc(tls, uint64(nScript+100))
 39916  		if faultSimScript == uintptr(0) {
 39917  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 39918  			return SQLITE_ERROR
 39919  		}
 39920  		libc.Xmemcpy(tls, faultSimScript, zScript, uint64(nScript))
 39921  		*(*uint8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = uint8(' ')
 39922  		faultSimScriptSize = nScript + 1
 39923  		faultSimInterp = interp
 39924  		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}))))
 39925  	}
 39926  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39927  	return SQLITE_OK
 39928  }
 39929  
 39930  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39931  	bp := tls.Alloc(452)
 39932  	defer tls.Free(452)
 39933  
 39934  	var rc int32
 39935  	var nProg int32 = 0
 39936  
 39937  	var z uintptr
 39938  	if argc != 3 {
 39939  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39940  			ts+24613, uintptr(0)))
 39941  	}
 39942  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 39943  		return TCL_ERROR
 39944  	}
 39945  	z = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 39946  	for nProg < 99 && *(*uint8)(unsafe.Pointer(z)) != 0 {
 39947  		for *(*uint8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x04 != 0) {
 39948  			z++
 39949  		}
 39950  		if int32(*(*uint8)(unsafe.Pointer(z))) == 0 {
 39951  			break
 39952  		}
 39953  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 39954  		for int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x04 != 0 {
 39955  			z++
 39956  		}
 39957  	}
 39958  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 39959  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 39960  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39961  	return TCL_OK
 39962  }
 39963  
 39964  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 39965  	var i int32
 39966  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd2))/uint64(unsafe.Sizeof(struct {
 39967  		FzName uintptr
 39968  		FxProc uintptr
 39969  	}{})); i++ {
 39970  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 39971  	}
 39972  	tcl.XTcl_LinkVar(tls, interp, ts+24628,
 39973  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 39974  	tcl.XTcl_LinkVar(tls, interp, ts+24652,
 39975  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 39976  	tcl.XTcl_LinkVar(tls, interp, ts+24676,
 39977  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 39978  	tcl.XTcl_LinkVar(tls, interp, ts+24696,
 39979  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 39980  	tcl.XTcl_LinkVar(tls, interp, ts+24720,
 39981  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 39982  	tcl.XTcl_LinkVar(tls, interp, ts+24744,
 39983  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 39984  	tcl.XTcl_LinkVar(tls, interp, ts+24760,
 39985  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39986  	return TCL_OK
 39987  }
 39988  
 39989  var aCmd2 = [20]struct {
 39990  	FzName uintptr
 39991  	FxProc uintptr
 39992  }{
 39993  	{FzName: ts + 24780, FxProc: 0},
 39994  	{FzName: ts + 24791, FxProc: 0},
 39995  	{FzName: ts + 24803, FxProc: 0},
 39996  	{FzName: ts + 24816, FxProc: 0},
 39997  	{FzName: ts + 24831, FxProc: 0},
 39998  	{FzName: ts + 24848, FxProc: 0},
 39999  	{FzName: ts + 24866, FxProc: 0},
 40000  	{FzName: ts + 24886, FxProc: 0},
 40001  	{FzName: ts + 24898, FxProc: 0},
 40002  	{FzName: ts + 24914, FxProc: 0},
 40003  	{FzName: ts + 24923, FxProc: 0},
 40004  	{FzName: ts + 24935, FxProc: 0},
 40005  	{FzName: ts + 24946, FxProc: 0},
 40006  	{FzName: ts + 24956, FxProc: 0},
 40007  	{FzName: ts + 24967, FxProc: 0},
 40008  	{FzName: ts + 24979, FxProc: 0},
 40009  	{FzName: ts + 24994, FxProc: 0},
 40010  	{FzName: ts + 25008, FxProc: 0},
 40011  	{FzName: ts + 25033, FxProc: 0},
 40012  	{FzName: ts + 25067, FxProc: 0},
 40013  }
 40014  
 40015  type Btree = Btree1
 40016  type BtCursor = BtCursor1
 40017  type BtShared = BtShared1
 40018  
 40019  type MemPage1 = struct {
 40020  	FisInit          u8
 40021  	FintKey          u8
 40022  	FintKeyLeaf      u8
 40023  	F__ccgo_pad1     [1]byte
 40024  	Fpgno            Pgno
 40025  	Fleaf            u8
 40026  	FhdrOffset       u8
 40027  	FchildPtrSize    u8
 40028  	Fmax1bytePayload u8
 40029  	FnOverflow       u8
 40030  	F__ccgo_pad2     [1]byte
 40031  	FmaxLocal        u16
 40032  	FminLocal        u16
 40033  	FcellOffset      u16
 40034  	FnFree           int32
 40035  	FnCell           u16
 40036  	FmaskPage        u16
 40037  	FaiOvfl          [4]u16
 40038  	F__ccgo_pad3     [4]byte
 40039  	FapOvfl          [4]uintptr
 40040  	FpBt             uintptr
 40041  	FaData           uintptr
 40042  	FaDataEnd        uintptr
 40043  	FaCellIdx        uintptr
 40044  	FaDataOfst       uintptr
 40045  	FpDbPage         uintptr
 40046  	FxCellSize       uintptr
 40047  	FxParseCell      uintptr
 40048  }
 40049  
 40050  type MemPage = MemPage1
 40051  type BtLock1 = struct {
 40052  	FpBtree      uintptr
 40053  	FiTable      Pgno
 40054  	FeLock       u8
 40055  	F__ccgo_pad1 [3]byte
 40056  	FpNext       uintptr
 40057  }
 40058  
 40059  type BtLock = BtLock1
 40060  type CellInfo1 = struct {
 40061  	FnKey     i64
 40062  	FpPayload uintptr
 40063  	FnPayload u32
 40064  	FnLocal   u16
 40065  	FnSize    u16
 40066  }
 40067  
 40068  type CellInfo = CellInfo1
 40069  
 40070  type IntegrityCk1 = struct {
 40071  	FpBt       uintptr
 40072  	FpPager    uintptr
 40073  	FaPgRef    uintptr
 40074  	FnPage     Pgno
 40075  	FmxErr     int32
 40076  	FnErr      int32
 40077  	FbOomFault int32
 40078  	FzPfx      uintptr
 40079  	Fv1        Pgno
 40080  	Fv2        int32
 40081  	FerrMsg    StrAccum
 40082  	Fheap      uintptr
 40083  	Fdb        uintptr
 40084  }
 40085  
 40086  type IntegrityCk = IntegrityCk1
 40087  
 40088  var sDb sqlite31
 40089  var nRefSqlite3 int32 = 0
 40090  
 40091  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40092  	bp := tls.Alloc(188)
 40093  	defer tls.Free(188)
 40094  
 40095  	var rc int32
 40096  
 40097  	var n int32
 40098  	var zFilename uintptr
 40099  	if argc != 3 {
 40100  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40101  			ts+25102, 0))
 40102  		return TCL_ERROR
 40103  	}
 40104  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 40105  		return TCL_ERROR
 40106  	}
 40107  	nRefSqlite3++
 40108  	if nRefSqlite3 == 1 {
 40109  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 40110  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 40111  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 40112  	}
 40113  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 40114  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 40115  	if zFilename == uintptr(0) {
 40116  		return TCL_ERROR
 40117  	}
 40118  	libc.Xmemcpy(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint64(n+1))
 40119  	*(*uint8)(unsafe.Pointer(zFilename + uintptr(n+1))) = uint8(0)
 40120  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+80, 0,
 40121  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 40122  	sqlite3.Xsqlite3_free(tls, zFilename)
 40123  	if rc != SQLITE_OK {
 40124  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40125  		return TCL_ERROR
 40126  	}
 40127  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 40128  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 40129  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 40130  	return TCL_OK
 40131  }
 40132  
 40133  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40134  	bp := tls.Alloc(48)
 40135  	defer tls.Free(48)
 40136  
 40137  	var pBt uintptr
 40138  	var rc int32
 40139  	if argc != 2 {
 40140  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40141  			ts+24430, 0))
 40142  		return TCL_ERROR
 40143  	}
 40144  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40145  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 40146  	if rc != SQLITE_OK {
 40147  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40148  		return TCL_ERROR
 40149  	}
 40150  	nRefSqlite3--
 40151  	if nRefSqlite3 == 0 {
 40152  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 40153  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 40154  		sDb.Fmutex = uintptr(0)
 40155  		sDb.FpVfs = uintptr(0)
 40156  	}
 40157  	return TCL_OK
 40158  }
 40159  
 40160  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40161  	bp := tls.Alloc(48)
 40162  	defer tls.Free(48)
 40163  
 40164  	var pBt uintptr
 40165  	var rc int32
 40166  	if argc != 2 {
 40167  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40168  			ts+24430, 0))
 40169  		return TCL_ERROR
 40170  	}
 40171  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40172  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40173  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 40174  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40175  	if rc != SQLITE_OK {
 40176  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40177  		return TCL_ERROR
 40178  	}
 40179  	return TCL_OK
 40180  }
 40181  
 40182  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40183  	bp := tls.Alloc(140)
 40184  	defer tls.Free(140)
 40185  
 40186  	var pBt uintptr
 40187  	var i int32
 40188  	var a uintptr
 40189  
 40190  	if argc != 2 {
 40191  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40192  			ts+24430, 0))
 40193  		return TCL_ERROR
 40194  	}
 40195  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40196  
 40197  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40198  
 40199  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40200  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40201  	for i = 0; i < 11; i++ {
 40202  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 40203  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 40204  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 40205  	}
 40206  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40207  
 40208  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40209  	return TCL_OK
 40210  }
 40211  
 40212  var zName1 = [11]uintptr{
 40213  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 40214  	ts + 24448, ts + 24452, ts + 24457, ts + 25126, ts + 25131,
 40215  }
 40216  
 40217  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40218  	bp := tls.Alloc(110)
 40219  	defer tls.Free(110)
 40220  
 40221  	var pBt uintptr
 40222  
 40223  	var pCur uintptr
 40224  	var rc int32 = SQLITE_OK
 40225  
 40226  	if argc != 4 {
 40227  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40228  			ts+25137, 0))
 40229  		return TCL_ERROR
 40230  	}
 40231  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40232  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 40233  		return TCL_ERROR
 40234  	}
 40235  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+76) != 0 {
 40236  		return TCL_ERROR
 40237  	}
 40238  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 40239  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 40240  	}
 40241  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 40242  	libc.Xmemset(tls, pCur, 0, uint64(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 40243  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40244  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40245  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 40246  	if rc == SQLITE_OK {
 40247  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 40248  	}
 40249  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40250  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40251  	if rc != 0 {
 40252  		tcl.XTcl_Free(tls, pCur)
 40253  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40254  		return TCL_ERROR
 40255  	}
 40256  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 40257  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 40258  	return SQLITE_OK
 40259  }
 40260  
 40261  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40262  	bp := tls.Alloc(48)
 40263  	defer tls.Free(48)
 40264  
 40265  	var pCur uintptr
 40266  	var rc int32
 40267  
 40268  	if argc != 2 {
 40269  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40270  			ts+24430, 0))
 40271  		return TCL_ERROR
 40272  	}
 40273  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40274  	{
 40275  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 40276  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40277  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40278  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 40279  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40280  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40281  
 40282  	}
 40283  	tcl.XTcl_Free(tls, pCur)
 40284  	if rc != 0 {
 40285  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40286  		return TCL_ERROR
 40287  	}
 40288  	return SQLITE_OK
 40289  }
 40290  
 40291  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40292  	bp := tls.Alloc(172)
 40293  	defer tls.Free(172)
 40294  
 40295  	var pCur uintptr
 40296  	var rc int32
 40297  	var res int32 = 0
 40298  
 40299  	if argc != 2 {
 40300  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40301  			ts+24430, 0))
 40302  		return TCL_ERROR
 40303  	}
 40304  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40305  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40306  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 40307  	if rc == SQLITE_DONE {
 40308  		res = 1
 40309  		rc = SQLITE_OK
 40310  	}
 40311  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40312  	if rc != 0 {
 40313  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40314  		return TCL_ERROR
 40315  	}
 40316  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 40317  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40318  	return SQLITE_OK
 40319  }
 40320  
 40321  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40322  	bp := tls.Alloc(176)
 40323  	defer tls.Free(176)
 40324  
 40325  	var pCur uintptr
 40326  	var rc int32
 40327  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 40328  
 40329  	if argc != 2 {
 40330  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40331  			ts+24430, 0))
 40332  		return TCL_ERROR
 40333  	}
 40334  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40335  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40336  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 40337  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40338  	if rc != 0 {
 40339  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40340  		return TCL_ERROR
 40341  	}
 40342  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 40343  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 40344  	return SQLITE_OK
 40345  }
 40346  
 40347  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40348  	bp := tls.Alloc(106)
 40349  	defer tls.Free(106)
 40350  
 40351  	var pCur uintptr
 40352  	var rc int32
 40353  
 40354  	if argc != 2 {
 40355  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40356  			ts+24430, 0))
 40357  		return TCL_ERROR
 40358  	}
 40359  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40360  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40361  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 40362  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40363  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 40364  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40365  	return SQLITE_OK
 40366  }
 40367  
 40368  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40369  	bp := tls.Alloc(106)
 40370  	defer tls.Free(106)
 40371  
 40372  	var pCur uintptr
 40373  	var n u32
 40374  
 40375  	if argc != 2 {
 40376  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40377  			ts+24430, 0))
 40378  		return TCL_ERROR
 40379  	}
 40380  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40381  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40382  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 40383  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40384  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 40385  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40386  	return SQLITE_OK
 40387  }
 40388  
 40389  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40390  	bp := tls.Alloc(516)
 40391  	defer tls.Free(516)
 40392  
 40393  	var in u64
 40394  
 40395  	var n1 int32
 40396  	var n2 int32
 40397  	var i int32
 40398  	var j int32
 40399  
 40400  	if argc != 5 {
 40401  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40402  			ts+25161, 0))
 40403  		return TCL_ERROR
 40404  	}
 40405  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+184) != 0 {
 40406  		return TCL_ERROR
 40407  	}
 40408  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+188) != 0 {
 40409  		return TCL_ERROR
 40410  	}
 40411  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+192) != 0 {
 40412  		return TCL_ERROR
 40413  	}
 40414  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+196) != 0 {
 40415  		return TCL_ERROR
 40416  	}
 40417  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 40418  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 40419  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 40420  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 40421  		if n1 > 9 || n1 < 1 {
 40422  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40423  				ts+25196, libc.VaList(bp+32, n1))
 40424  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 40425  			return TCL_ERROR
 40426  		}
 40427  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504))
 40428  		if n1 != n2 {
 40429  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40430  				ts+25246, libc.VaList(bp+56, n1, n2))
 40431  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 40432  			return TCL_ERROR
 40433  		}
 40434  		if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 40435  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40436  				ts+25294, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 504))))
 40437  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 40438  			return TCL_ERROR
 40439  		}
 40440  		if in&uint64(0xffffffff) == in {
 40441  			n2 = int32(func() uint8 {
 40442  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 40443  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 512)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 40444  				}
 40445  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+512)
 40446  			}())
 40447  			*(*u64)(unsafe.Pointer(bp + 504)) = u64(*(*u32)(unsafe.Pointer(bp + 512)))
 40448  			if n1 != n2 {
 40449  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40450  					ts+25333,
 40451  					libc.VaList(bp+120, n1, n2))
 40452  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 40453  				return TCL_ERROR
 40454  			}
 40455  			if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 40456  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]uint8{})), bp+300,
 40457  					ts+25383,
 40458  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 504))))
 40459  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 40460  				return TCL_ERROR
 40461  			}
 40462  		}
 40463  
 40464  		for j = 0; j < 19; j++ {
 40465  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504)
 40466  		}
 40467  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 40468  	}
 40469  	return TCL_OK
 40470  }
 40471  
 40472  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40473  	bp := tls.Alloc(236)
 40474  	defer tls.Free(236)
 40475  
 40476  	var db uintptr
 40477  	var pBt uintptr
 40478  	var iDb int32 = 0
 40479  
 40480  	if argc != 2 && argc != 3 {
 40481  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40482  			ts+25439, 0))
 40483  		return TCL_ERROR
 40484  	}
 40485  
 40486  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) {
 40487  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25455, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+11945, 0))
 40488  		return TCL_ERROR
 40489  	}
 40490  	if argc == 3 {
 40491  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40492  	}
 40493  
 40494  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 40495  
 40496  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*32)).FpBt
 40497  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+136, ts+9889, libc.VaList(bp+64, pBt))
 40498  	tcl.XTcl_SetResult(tls, interp, bp+136, uintptr(1))
 40499  	return TCL_OK
 40500  }
 40501  
 40502  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40503  	bp := tls.Alloc(32)
 40504  	defer tls.Free(32)
 40505  
 40506  	var pBt uintptr
 40507  	var res int32
 40508  	var pFile uintptr
 40509  
 40510  	if argc != 2 {
 40511  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40512  			ts+24430, 0))
 40513  		return TCL_ERROR
 40514  	}
 40515  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40516  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40517  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40518  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40519  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 40520  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40521  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40522  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(res != 0)))
 40523  	return SQLITE_OK
 40524  }
 40525  
 40526  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40527  	bp := tls.Alloc(36)
 40528  	defer tls.Free(36)
 40529  
 40530  	var pBt uintptr
 40531  
 40532  	if argc != 3 {
 40533  		tcl.XTcl_AppendResult(tls,
 40534  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25476, 0))
 40535  		return TCL_ERROR
 40536  	}
 40537  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40538  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 40539  		return TCL_ERROR
 40540  	}
 40541  
 40542  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40543  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40544  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 40545  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40546  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40547  	return TCL_OK
 40548  }
 40549  
 40550  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40551  	bp := tls.Alloc(68)
 40552  	defer tls.Free(68)
 40553  
 40554  	var pCur uintptr
 40555  
 40556  	if objc != 4 && objc != 3 {
 40557  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25488)
 40558  		return TCL_ERROR
 40559  	}
 40560  
 40561  	libc.Xmemset(tls, bp+16, 0, uint64(unsafe.Sizeof(BtreePayload{})))
 40562  	if objc == 4 {
 40563  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 40564  			return TCL_ERROR
 40565  		}
 40566  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 40567  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16+36)
 40568  	} else {
 40569  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64)
 40570  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 40571  	}
 40572  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 40573  
 40574  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40575  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40576  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 40577  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40578  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40579  
 40580  	tcl.XTcl_ResetResult(tls, interp)
 40581  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 40582  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 64))), 0))
 40583  		return TCL_ERROR
 40584  	}
 40585  	return TCL_OK
 40586  }
 40587  
 40588  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 40589  	var i int32
 40590  
 40591  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd3))/uint64(unsafe.Sizeof(struct {
 40592  		FzName uintptr
 40593  		FxProc uintptr
 40594  	}{})); i++ {
 40595  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 40596  	}
 40597  
 40598  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25512, *(*uintptr)(unsafe.Pointer(&struct {
 40599  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 40600  	}{btree_insert})), uintptr(0), uintptr(0))
 40601  
 40602  	return TCL_OK
 40603  }
 40604  
 40605  var aCmd3 = [14]struct {
 40606  	FzName uintptr
 40607  	FxProc uintptr
 40608  }{
 40609  	{FzName: ts + 25525, FxProc: 0},
 40610  	{FzName: ts + 25536, FxProc: 0},
 40611  	{FzName: ts + 25548, FxProc: 0},
 40612  	{FzName: ts + 25572, FxProc: 0},
 40613  	{FzName: ts + 25590, FxProc: 0},
 40614  	{FzName: ts + 25603, FxProc: 0},
 40615  	{FzName: ts + 25622, FxProc: 0},
 40616  	{FzName: ts + 25633, FxProc: 0},
 40617  	{FzName: ts + 25643, FxProc: 0},
 40618  	{FzName: ts + 25662, FxProc: 0},
 40619  	{FzName: ts + 25674, FxProc: 0},
 40620  	{FzName: ts + 25692, FxProc: 0},
 40621  	{FzName: ts + 25706, FxProc: 0},
 40622  	{FzName: ts + 25720, FxProc: 0},
 40623  }
 40624  
 40625  type sched_param = struct{ Fsched_priority int32 }
 40626  
 40627  type cpu_set_t = struct{ F__bits [16]uint64 }
 40628  
 40629  type _pthread_cleanup_buffer = struct {
 40630  	F__routine    uintptr
 40631  	F__arg        uintptr
 40632  	F__canceltype int32
 40633  	F__ccgo_pad1  [4]byte
 40634  	F__prev       uintptr
 40635  }
 40636  
 40637  type __pthread_cleanup_frame = struct {
 40638  	F__cancel_routine uintptr
 40639  	F__cancel_arg     uintptr
 40640  	F__do_it          int32
 40641  	F__cancel_type    int32
 40642  }
 40643  
 40644  type Thread = struct {
 40645  	FzFilename   uintptr
 40646  	FxOp         uintptr
 40647  	FzArg        uintptr
 40648  	Fopnum       int32
 40649  	Fbusy        int32
 40650  	Fcompleted   int32
 40651  	F__ccgo_pad1 [4]byte
 40652  	Fdb          uintptr
 40653  	FpStmt       uintptr
 40654  	FzErr        uintptr
 40655  	FzStaticErr  uintptr
 40656  	Frc          int32
 40657  	Fargc        int32
 40658  	Fargv        [100]uintptr
 40659  	Fcolv        [100]uintptr
 40660  }
 40661  
 40662  var threadset [26]Thread
 40663  
 40664  func test_barrier(tls *libc.TLS) {
 40665  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 40666  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 40667  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 40668  }
 40669  
 40670  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 40671  	var p uintptr = pArg
 40672  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40673  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40674  	}
 40675  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+40)
 40676  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 40677  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 40678  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40679  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40680  	}
 40681  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40682  	test_barrier(tls)
 40683  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 40684  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40685  		libc.Xsched_yield(tls)
 40686  	}
 40687  	test_barrier(tls)
 40688  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 40689  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40690  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40691  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 40692  		}
 40693  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 40694  		test_barrier(tls)
 40695  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 40696  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40697  			libc.Xsched_yield(tls)
 40698  		}
 40699  		test_barrier(tls)
 40700  	}
 40701  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40702  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40703  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40704  	}
 40705  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40706  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40707  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40708  	}
 40709  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40710  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40711  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 40712  	}
 40713  	test_barrier(tls)
 40714  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 40715  	sqlite3.Xsqlite3_thread_cleanup(tls)
 40716  	return uintptr(0)
 40717  }
 40718  
 40719  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 40720  	bp := tls.Alloc(16)
 40721  	defer tls.Free(16)
 40722  
 40723  	if zArg == uintptr(0) || int32(*(*uint8)(unsafe.Pointer(zArg))) == 0 || int32(*(*uint8)(unsafe.Pointer(zArg + 1))) != 0 || !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zArg))))*2)))&int32(_ISupper) != 0) {
 40724  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 40725  		return -1
 40726  	}
 40727  	return int32(*(*uint8)(unsafe.Pointer(zArg))) - 'A'
 40728  }
 40729  
 40730  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40731  	bp := tls.Alloc(96)
 40732  	defer tls.Free(96)
 40733  
 40734  	var i int32
 40735  
 40736  	var rc int32
 40737  
 40738  	if argc != 3 {
 40739  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40740  			ts+25780, 0))
 40741  		return TCL_ERROR
 40742  	}
 40743  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40744  	if i < 0 {
 40745  		return TCL_ERROR
 40746  	}
 40747  	if threadset[i].Fbusy != 0 {
 40748  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 40749  		return TCL_ERROR
 40750  	}
 40751  	threadset[i].Fbusy = 1
 40752  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 40753  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 40754  	threadset[i].Fopnum = 1
 40755  	threadset[i].Fcompleted = 0
 40756  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 40757  		f func(*libc.TLS, uintptr) uintptr
 40758  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40759  	if rc != 0 {
 40760  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 40761  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 40762  		threadset[i].Fbusy = 0
 40763  		return TCL_ERROR
 40764  	}
 40765  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 40766  	return TCL_OK
 40767  }
 40768  
 40769  func test_thread_wait(tls *libc.TLS, p uintptr) {
 40770  	test_barrier(tls)
 40771  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40772  		libc.Xsched_yield(tls)
 40773  	}
 40774  	test_barrier(tls)
 40775  }
 40776  
 40777  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40778  	bp := tls.Alloc(48)
 40779  	defer tls.Free(48)
 40780  
 40781  	var i int32
 40782  
 40783  	if argc != 2 {
 40784  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40785  			ts+25849, 0))
 40786  		return TCL_ERROR
 40787  	}
 40788  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40789  	if i < 0 {
 40790  		return TCL_ERROR
 40791  	}
 40792  	if !(threadset[i].Fbusy != 0) {
 40793  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40794  		return TCL_ERROR
 40795  	}
 40796  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40797  	return TCL_OK
 40798  }
 40799  
 40800  func test_stop_thread(tls *libc.TLS, p uintptr) {
 40801  	test_thread_wait(tls, p)
 40802  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 40803  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 40804  	test_thread_wait(tls, p)
 40805  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 40806  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 40807  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 40808  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 40809  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 40810  }
 40811  
 40812  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40813  	bp := tls.Alloc(48)
 40814  	defer tls.Free(48)
 40815  
 40816  	var i int32
 40817  
 40818  	if argc != 2 {
 40819  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40820  			ts+25849, 0))
 40821  		return TCL_ERROR
 40822  	}
 40823  	if int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 40824  		for i = 0; i < N_THREAD; i++ {
 40825  			if threadset[i].Fbusy != 0 {
 40826  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40827  			}
 40828  		}
 40829  	} else {
 40830  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40831  		if i < 0 {
 40832  			return TCL_ERROR
 40833  		}
 40834  		if !(threadset[i].Fbusy != 0) {
 40835  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40836  			return TCL_ERROR
 40837  		}
 40838  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40839  	}
 40840  	return TCL_OK
 40841  }
 40842  
 40843  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40844  	bp := tls.Alloc(172)
 40845  	defer tls.Free(172)
 40846  
 40847  	var i int32
 40848  
 40849  	if argc != 2 {
 40850  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40851  			ts+25849, 0))
 40852  		return TCL_ERROR
 40853  	}
 40854  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40855  	if i < 0 {
 40856  		return TCL_ERROR
 40857  	}
 40858  	if !(threadset[i].Fbusy != 0) {
 40859  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40860  		return TCL_ERROR
 40861  	}
 40862  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40863  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 40864  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40865  	return TCL_OK
 40866  }
 40867  
 40868  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40869  	bp := tls.Alloc(84)
 40870  	defer tls.Free(84)
 40871  
 40872  	var i int32
 40873  
 40874  	if argc != 3 {
 40875  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40876  			ts+25868, 0))
 40877  		return TCL_ERROR
 40878  	}
 40879  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40880  	if i < 0 {
 40881  		return TCL_ERROR
 40882  	}
 40883  	if !(threadset[i].Fbusy != 0) {
 40884  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40885  		return TCL_ERROR
 40886  	}
 40887  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40888  		return TCL_ERROR
 40889  	}
 40890  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40891  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40892  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40893  		return TCL_ERROR
 40894  	}
 40895  	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))
 40896  	return TCL_OK
 40897  }
 40898  
 40899  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40900  	bp := tls.Alloc(84)
 40901  	defer tls.Free(84)
 40902  
 40903  	var i int32
 40904  
 40905  	if argc != 3 {
 40906  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40907  			ts+25868, 0))
 40908  		return TCL_ERROR
 40909  	}
 40910  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40911  	if i < 0 {
 40912  		return TCL_ERROR
 40913  	}
 40914  	if !(threadset[i].Fbusy != 0) {
 40915  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40916  		return TCL_ERROR
 40917  	}
 40918  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40919  		return TCL_ERROR
 40920  	}
 40921  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40922  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40923  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40924  		return TCL_ERROR
 40925  	}
 40926  	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))
 40927  	return TCL_OK
 40928  }
 40929  
 40930  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40931  	bp := tls.Alloc(64)
 40932  	defer tls.Free(64)
 40933  
 40934  	var i int32
 40935  	var zName uintptr
 40936  
 40937  	if argc != 2 {
 40938  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40939  			ts+25849, 0))
 40940  		return TCL_ERROR
 40941  	}
 40942  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40943  	if i < 0 {
 40944  		return TCL_ERROR
 40945  	}
 40946  	if !(threadset[i].Fbusy != 0) {
 40947  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40948  		return TCL_ERROR
 40949  	}
 40950  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40951  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 40952  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 40953  	return TCL_OK
 40954  }
 40955  
 40956  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40957  	bp := tls.Alloc(64)
 40958  	defer tls.Free(64)
 40959  
 40960  	var i int32
 40961  
 40962  	if argc != 2 {
 40963  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40964  			ts+25849, 0))
 40965  		return TCL_ERROR
 40966  	}
 40967  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40968  	if i < 0 {
 40969  		return TCL_ERROR
 40970  	}
 40971  	if !(threadset[i].Fbusy != 0) {
 40972  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40973  		return TCL_ERROR
 40974  	}
 40975  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40976  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 40977  	return TCL_OK
 40978  }
 40979  
 40980  func do_compile(tls *libc.TLS, p uintptr) {
 40981  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 40982  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 40983  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40984  		return
 40985  	}
 40986  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40987  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40988  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40989  	}
 40990  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 40991  }
 40992  
 40993  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40994  	bp := tls.Alloc(56)
 40995  	defer tls.Free(56)
 40996  
 40997  	var i int32
 40998  	if argc != 3 {
 40999  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41000  			ts+25921, 0))
 41001  		return TCL_ERROR
 41002  	}
 41003  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41004  	if i < 0 {
 41005  		return TCL_ERROR
 41006  	}
 41007  	if !(threadset[i].Fbusy != 0) {
 41008  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41009  		return TCL_ERROR
 41010  	}
 41011  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41012  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 41013  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 41014  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41015  	test_barrier(tls)
 41016  	threadset[i].Fopnum++
 41017  	return TCL_OK
 41018  }
 41019  
 41020  func do_step(tls *libc.TLS, p uintptr) {
 41021  	var i int32
 41022  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41023  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41024  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41025  		return
 41026  	}
 41027  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41028  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 41029  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41030  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 41031  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 41032  		}
 41033  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 41034  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 41035  		}
 41036  	}
 41037  }
 41038  
 41039  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41040  	bp := tls.Alloc(48)
 41041  	defer tls.Free(48)
 41042  
 41043  	var i int32
 41044  	if argc != 2 {
 41045  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41046  			ts+25958, 0))
 41047  		return TCL_ERROR
 41048  	}
 41049  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41050  	if i < 0 {
 41051  		return TCL_ERROR
 41052  	}
 41053  	if !(threadset[i].Fbusy != 0) {
 41054  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41055  		return TCL_ERROR
 41056  	}
 41057  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41058  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 41059  	test_barrier(tls)
 41060  	threadset[i].Fopnum++
 41061  	return TCL_OK
 41062  }
 41063  
 41064  func do_finalize(tls *libc.TLS, p uintptr) {
 41065  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41066  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41067  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41068  		return
 41069  	}
 41070  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 41071  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41072  }
 41073  
 41074  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41075  	bp := tls.Alloc(48)
 41076  	defer tls.Free(48)
 41077  
 41078  	var i int32
 41079  	if argc != 2 {
 41080  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41081  			ts+25958, 0))
 41082  		return TCL_ERROR
 41083  	}
 41084  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41085  	if i < 0 {
 41086  		return TCL_ERROR
 41087  	}
 41088  	if !(threadset[i].Fbusy != 0) {
 41089  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41090  		return TCL_ERROR
 41091  	}
 41092  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41093  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 41094  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 41095  	threadset[i].FzArg = uintptr(0)
 41096  	test_barrier(tls)
 41097  	threadset[i].Fopnum++
 41098  	return TCL_OK
 41099  }
 41100  
 41101  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41102  	bp := tls.Alloc(64)
 41103  	defer tls.Free(64)
 41104  
 41105  	var i int32
 41106  	var j int32
 41107  	var temp uintptr
 41108  	if argc != 3 {
 41109  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41110  			ts+25963, 0))
 41111  		return TCL_ERROR
 41112  	}
 41113  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41114  	if i < 0 {
 41115  		return TCL_ERROR
 41116  	}
 41117  	if !(threadset[i].Fbusy != 0) {
 41118  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41119  		return TCL_ERROR
 41120  	}
 41121  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41122  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 41123  	if j < 0 {
 41124  		return TCL_ERROR
 41125  	}
 41126  	if !(threadset[j].Fbusy != 0) {
 41127  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 41128  		return TCL_ERROR
 41129  	}
 41130  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*1680)
 41131  	temp = threadset[i].Fdb
 41132  	threadset[i].Fdb = threadset[j].Fdb
 41133  	threadset[j].Fdb = temp
 41134  	return TCL_OK
 41135  }
 41136  
 41137  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41138  	bp := tls.Alloc(164)
 41139  	defer tls.Free(164)
 41140  
 41141  	var i int32
 41142  
 41143  	if argc != 2 {
 41144  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41145  			ts+25849, 0))
 41146  		return TCL_ERROR
 41147  	}
 41148  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41149  	if i < 0 {
 41150  		return TCL_ERROR
 41151  	}
 41152  	if !(threadset[i].Fbusy != 0) {
 41153  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41154  		return TCL_ERROR
 41155  	}
 41156  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41157  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 41158  	threadset[i].Fdb = uintptr(0)
 41159  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 41160  	return TCL_OK
 41161  }
 41162  
 41163  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41164  	bp := tls.Alloc(48)
 41165  	defer tls.Free(48)
 41166  
 41167  	var i int32
 41168  	if argc != 3 {
 41169  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41170  			ts+25972, 0))
 41171  		return TCL_ERROR
 41172  	}
 41173  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41174  	if i < 0 {
 41175  		return TCL_ERROR
 41176  	}
 41177  	if !(threadset[i].Fbusy != 0) {
 41178  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41179  		return TCL_ERROR
 41180  	}
 41181  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41182  
 41183  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 41184  	return TCL_OK
 41185  }
 41186  
 41187  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41188  	bp := tls.Alloc(164)
 41189  	defer tls.Free(164)
 41190  
 41191  	var i int32
 41192  
 41193  	if argc != 2 {
 41194  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41195  			ts+25849, 0))
 41196  		return TCL_ERROR
 41197  	}
 41198  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41199  	if i < 0 {
 41200  		return TCL_ERROR
 41201  	}
 41202  	if !(threadset[i].Fbusy != 0) {
 41203  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41204  		return TCL_ERROR
 41205  	}
 41206  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 41207  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 41208  	threadset[i].FpStmt = uintptr(0)
 41209  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 41210  	return TCL_OK
 41211  }
 41212  
 41213  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 41214  	var i int32
 41215  
 41216  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd4))/uint64(unsafe.Sizeof(struct {
 41217  		FzName uintptr
 41218  		FxProc uintptr
 41219  	}{})); i++ {
 41220  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 41221  	}
 41222  	return TCL_OK
 41223  }
 41224  
 41225  var aCmd4 = [15]struct {
 41226  	FzName uintptr
 41227  	FxProc uintptr
 41228  }{
 41229  	{FzName: ts + 25979, FxProc: 0},
 41230  	{FzName: ts + 25993, FxProc: 0},
 41231  	{FzName: ts + 26005, FxProc: 0},
 41232  	{FzName: ts + 26017, FxProc: 0},
 41233  	{FzName: ts + 26029, FxProc: 0},
 41234  	{FzName: ts + 26041, FxProc: 0},
 41235  	{FzName: ts + 26056, FxProc: 0},
 41236  	{FzName: ts + 26070, FxProc: 0},
 41237  	{FzName: ts + 26083, FxProc: 0},
 41238  	{FzName: ts + 26098, FxProc: 0},
 41239  	{FzName: ts + 26110, FxProc: 0},
 41240  	{FzName: ts + 26126, FxProc: 0},
 41241  	{FzName: ts + 26138, FxProc: 0},
 41242  	{FzName: ts + 26152, FxProc: 0},
 41243  	{FzName: ts + 26166, FxProc: 0},
 41244  }
 41245  
 41246  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41247  	bp := tls.Alloc(4)
 41248  	defer tls.Free(4)
 41249  
 41250  	var bytes uintptr
 41251  	var pRet uintptr
 41252  
 41253  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 41254  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 41255  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 41256  	return TCL_OK
 41257  }
 41258  
 41259  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41260  	bp := tls.Alloc(96)
 41261  	defer tls.Free(96)
 41262  
 41263  	var i int32
 41264  
 41265  	if objc != 3 {
 41266  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41267  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26182, 0))
 41268  		return TCL_ERROR
 41269  	}
 41270  
 41271  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32) != 0 {
 41272  		return TCL_ERROR
 41273  	}
 41274  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+36) != 0 {
 41275  		return TCL_ERROR
 41276  	}
 41277  
 41278  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 41279  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26209
 41280  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 41281  
 41282  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 41283  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 41284  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 41285  		}
 41286  	}
 41287  
 41288  	return TCL_OK
 41289  }
 41290  
 41291  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 41292  	bp := tls.Alloc(104)
 41293  	defer tls.Free(104)
 41294  
 41295  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 41296  		{FzName: ts + 26221, Fenc: u8(SQLITE_UTF8)},
 41297  		{FzName: ts + 26226, Fenc: u8(SQLITE_UTF16LE)},
 41298  		{FzName: ts + 26234, Fenc: u8(SQLITE_UTF16BE)},
 41299  		{FzName: ts + 26242, Fenc: u8(SQLITE_UTF16)},
 41300  		{},
 41301  	}
 41302  	var pEnc uintptr
 41303  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 41304  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 16 {
 41305  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 41306  			break
 41307  		}
 41308  	}
 41309  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 41310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26248, z, 0))
 41311  	}
 41312  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 41313  		return u8(SQLITE_UTF16LE)
 41314  	}
 41315  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 41316  }
 41317  
 41318  type EncName = struct {
 41319  	FzName       uintptr
 41320  	Fenc         u8
 41321  	F__ccgo_pad1 [7]byte
 41322  }
 41323  
 41324  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41325  	bp := tls.Alloc(44)
 41326  	defer tls.Free(44)
 41327  
 41328  	var enc_from u8
 41329  	var enc_to u8
 41330  	var pVal uintptr
 41331  	var z uintptr
 41332  
 41333  	var xDel uintptr = uintptr(0)
 41334  
 41335  	if objc != 4 && objc != 5 {
 41336  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41337  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 41338  			ts+26267, 0))
 41339  		return TCL_ERROR
 41340  	}
 41341  	if objc == 5 {
 41342  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 41343  	}
 41344  
 41345  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41346  	if !(enc_from != 0) {
 41347  		return TCL_ERROR
 41348  	}
 41349  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 41350  	if !(enc_to != 0) {
 41351  		return TCL_ERROR
 41352  	}
 41353  
 41354  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 41355  
 41356  	if int32(enc_from) == SQLITE_UTF8 {
 41357  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41358  		if objc == 5 {
 41359  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 41360  		}
 41361  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41362  	} else {
 41363  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40)
 41364  		if objc == 5 {
 41365  			var zTmp uintptr = z
 41366  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 41367  			libc.Xmemcpy(tls, z, zTmp, uint64(*(*int32)(unsafe.Pointer(bp + 40))))
 41368  		}
 41369  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41370  	}
 41371  
 41372  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 41373  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 41374  		if int32(enc_to) == SQLITE_UTF8 {
 41375  			return 1
 41376  		}
 41377  		return 2
 41378  	}()
 41379  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 41380  
 41381  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 41382  
 41383  	return TCL_OK
 41384  }
 41385  
 41386  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41387  	sqlite3.Xsqlite3UtfSelfTest(tls)
 41388  	return SQLITE_OK
 41389  }
 41390  
 41391  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 41392  	var i int32
 41393  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd5))/uint64(unsafe.Sizeof(struct {
 41394  		FzName uintptr
 41395  		FxProc uintptr
 41396  	}{})); i++ {
 41397  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 41398  	}
 41399  	return SQLITE_OK
 41400  }
 41401  
 41402  var aCmd5 = [4]struct {
 41403  	FzName uintptr
 41404  	FxProc uintptr
 41405  }{
 41406  	{FzName: ts + 26302, FxProc: 0},
 41407  	{FzName: ts + 26311, FxProc: 0},
 41408  	{FzName: ts + 26331, FxProc: 0},
 41409  	{FzName: ts + 26346, FxProc: 0},
 41410  }
 41411  
 41412  type CrashFile1 = struct {
 41413  	FpMethod     uintptr
 41414  	FpRealFile   uintptr
 41415  	FzName       uintptr
 41416  	Fflags       int32
 41417  	F__ccgo_pad1 [4]byte
 41418  	FzData       uintptr
 41419  	FnData       int32
 41420  	F__ccgo_pad2 [4]byte
 41421  	FiSize       i64
 41422  }
 41423  
 41424  type CrashFile = CrashFile1
 41425  type CrashGlobal1 = struct {
 41426  	FpWriteList             uintptr
 41427  	FpWriteListEnd          uintptr
 41428  	FiSectorSize            int32
 41429  	FiDeviceCharacteristics int32
 41430  	FiCrash                 int32
 41431  	FzCrashFile             [500]uint8
 41432  }
 41433  
 41434  type CrashGlobal = CrashGlobal1
 41435  type WriteBuffer1 = struct {
 41436  	FiOffset     i64
 41437  	FnBuf        int32
 41438  	F__ccgo_pad1 [4]byte
 41439  	FzBuf        uintptr
 41440  	FpFile       uintptr
 41441  	FpNext       uintptr
 41442  }
 41443  
 41444  type WriteBuffer = WriteBuffer1
 41445  
 41446  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 41447  
 41448  var sqlite3CrashTestEnable int32 = 0
 41449  
 41450  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 41451  	return tcl.XTcl_AttemptAlloc(tls, uint32(size_t(nByte)))
 41452  }
 41453  
 41454  func crash_free(tls *libc.TLS, p uintptr) {
 41455  	tcl.XTcl_Free(tls, p)
 41456  }
 41457  
 41458  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 41459  	return tcl.XTcl_AttemptRealloc(tls, p, uint32(size_t(n)))
 41460  }
 41461  
 41462  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 41463  	var rc int32 = SQLITE_OK
 41464  	var iSkip int32 = 0
 41465  	if iAmt-i64(iSkip) > int64(0) {
 41466  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 41467  	}
 41468  	return rc
 41469  }
 41470  
 41471  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 41472  	bp := tls.Alloc(16)
 41473  	defer tls.Free(16)
 41474  
 41475  	var rc int32 = SQLITE_OK
 41476  	var iDc int32 = g.FiDeviceCharacteristics
 41477  	var pWrite uintptr
 41478  	var ppPtr uintptr
 41479  
 41480  	var pFinal uintptr = uintptr(0)
 41481  	if !(isCrash != 0) {
 41482  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41483  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 41484  				pFinal = pWrite
 41485  			}
 41486  		}
 41487  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 41488  		var nWrite int32 = 0
 41489  
 41490  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41491  			nWrite++
 41492  		}
 41493  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 41494  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 41495  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 41496  				return -1 * *(*int32)(unsafe.Pointer(bp))
 41497  			}
 41498  			return *(*int32)(unsafe.Pointer(bp))
 41499  		}() % nWrite
 41500  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41501  			*(*int32)(unsafe.Pointer(bp))--
 41502  		}
 41503  		pFinal = pWrite
 41504  	}
 41505  
 41506  	ppPtr = uintptr(unsafe.Pointer(&g))
 41507  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 41508  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 41509  
 41510  		var eAction int32 = 0
 41511  		if !(isCrash != 0) {
 41512  			eAction = 2
 41513  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 41514  				eAction = 1
 41515  			}
 41516  		} else {
 41517  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 41518  
 41519  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 41520  				*(*uint8)(unsafe.Pointer(bp + 4)) &= uint8(0x01)
 41521  			}
 41522  
 41523  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 41524  				*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(0)
 41525  			}
 41526  
 41527  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41528  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 41529  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 41530  					*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(0)
 41531  				}
 41532  			}
 41533  
 41534  			if int32(*(*uint8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 41535  				eAction = 3
 41536  			} else {
 41537  				eAction = func() int32 {
 41538  					if int32(*(*uint8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 41539  						return 2
 41540  					}
 41541  					return 1
 41542  				}()
 41543  			}
 41544  		}
 41545  
 41546  		switch eAction {
 41547  		case 1:
 41548  			{
 41549  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41550  					rc = writeDbFile(tls,
 41551  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41552  				} else {
 41553  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41554  				}
 41555  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 41556  				crash_free(tls, pWrite)
 41557  				break
 41558  
 41559  			}
 41560  		case 2:
 41561  			{
 41562  				ppPtr = pWrite + 32
 41563  				break
 41564  
 41565  			}
 41566  		case 3:
 41567  			{
 41568  				var zGarbage uintptr
 41569  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 41570  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 41571  
 41572  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 41573  				if zGarbage != 0 {
 41574  					var i sqlite3_int64
 41575  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 41576  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 41577  						rc = writeDbFile(tls,
 41578  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 41579  					}
 41580  					crash_free(tls, zGarbage)
 41581  				} else {
 41582  					rc = SQLITE_NOMEM
 41583  				}
 41584  
 41585  				ppPtr = pWrite + 32
 41586  				break
 41587  
 41588  			}
 41589  
 41590  		default:
 41591  		}
 41592  
 41593  		if pWrite == pFinal {
 41594  			break
 41595  		}
 41596  	}
 41597  
 41598  	if rc == SQLITE_OK && isCrash != 0 {
 41599  		libc.Xexit(tls, -1)
 41600  	}
 41601  
 41602  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41603  	}
 41604  	g.FpWriteListEnd = pWrite
 41605  
 41606  	return rc
 41607  }
 41608  
 41609  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 41610  	var pNew uintptr
 41611  
 41612  	pNew = crash_malloc(tls, int32(uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf)))
 41613  	if pNew == uintptr(0) {
 41614  		libc.Xfprintf(tls, libc.Xstderr, ts+26365, 0)
 41615  	}
 41616  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf))
 41617  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 41618  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 41619  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 41620  	if zBuf != 0 {
 41621  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*40
 41622  		libc.Xmemcpy(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint64(nBuf))
 41623  	}
 41624  
 41625  	if g.FpWriteList != 0 {
 41626  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 41627  	} else {
 41628  		g.FpWriteList = pNew
 41629  	}
 41630  	g.FpWriteListEnd = pNew
 41631  
 41632  	return SQLITE_OK
 41633  }
 41634  
 41635  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 41636  	var pCrash uintptr = pFile
 41637  	writeListSync(tls, pCrash, 0)
 41638  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 41639  	return SQLITE_OK
 41640  }
 41641  
 41642  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41643  	var pCrash uintptr = pFile
 41644  	var nCopy int32 = func() int32 {
 41645  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 41646  			return int32(i64(iAmt))
 41647  		}
 41648  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 41649  	}()
 41650  
 41651  	if nCopy > 0 {
 41652  		libc.Xmemcpy(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint64(nCopy))
 41653  	}
 41654  
 41655  	if nCopy < iAmt {
 41656  		return SQLITE_IOERR | int32(2)<<8
 41657  	}
 41658  
 41659  	return SQLITE_OK
 41660  }
 41661  
 41662  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41663  	var pCrash uintptr = pFile
 41664  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41665  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 41666  	}
 41667  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 41668  		var zNew uintptr
 41669  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 41670  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 41671  		if !(zNew != 0) {
 41672  			return SQLITE_NOMEM
 41673  		}
 41674  		libc.Xmemset(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint64(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData))
 41675  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 41676  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 41677  	}
 41678  	libc.Xmemcpy(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint64(iAmt))
 41679  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 41680  }
 41681  
 41682  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 41683  	var pCrash uintptr = pFile
 41684  
 41685  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 41686  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 41687  	}
 41688  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 41689  }
 41690  
 41691  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 41692  	var pCrash uintptr = pFile
 41693  	var isCrash int32 = 0
 41694  
 41695  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 41696  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 28
 41697  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 41698  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 41699  
 41700  	if nCrashFile > 0 && int32(*(*uint8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 41701  		nCrashFile--
 41702  		if nName > nCrashFile {
 41703  			nName = nCrashFile
 41704  		}
 41705  	}
 41706  
 41707  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint64(nName)) {
 41708  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 41709  			isCrash = 1
 41710  		}
 41711  	}
 41712  
 41713  	return writeListSync(tls, pCrash, isCrash)
 41714  }
 41715  
 41716  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 41717  	var pCrash uintptr = pFile
 41718  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 41719  	return SQLITE_OK
 41720  }
 41721  
 41722  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 41723  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 41724  }
 41725  
 41726  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 41727  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 41728  }
 41729  
 41730  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 41731  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 41732  }
 41733  
 41734  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 41735  	if op == SQLITE_FCNTL_SIZE_HINT {
 41736  		var pCrash uintptr = pFile
 41737  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 41738  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41739  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 41740  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 41741  			}
 41742  		}
 41743  		return SQLITE_OK
 41744  	}
 41745  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 41746  }
 41747  
 41748  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 41749  	return g.FiSectorSize
 41750  }
 41751  
 41752  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 41753  	return g.FiDeviceCharacteristics
 41754  }
 41755  
 41756  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 41757  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41758  	return (*struct {
 41759  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 41760  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 41761  }
 41762  
 41763  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 41764  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41765  	(*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)
 41766  }
 41767  
 41768  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 41769  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41770  	return (*struct {
 41771  		f func(*libc.TLS, uintptr, int32) int32
 41772  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 41773  }
 41774  
 41775  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 41776  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41777  	return (*struct {
 41778  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 41779  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 41780  }
 41781  
 41782  var CrashFileVtab = sqlite3_io_methods{
 41783  	FiVersion:               2,
 41784  	FxClose:                 0,
 41785  	FxRead:                  0,
 41786  	FxWrite:                 0,
 41787  	FxTruncate:              0,
 41788  	FxSync:                  0,
 41789  	FxFileSize:              0,
 41790  	FxLock:                  0,
 41791  	FxUnlock:                0,
 41792  	FxCheckReservedLock:     0,
 41793  	FxFileControl:           0,
 41794  	FxSectorSize:            0,
 41795  	FxDeviceCharacteristics: 0,
 41796  	FxShmMap:                0,
 41797  	FxShmLock:               0,
 41798  	FxShmBarrier:            0,
 41799  	FxShmUnmap:              0,
 41800  }
 41801  
 41802  type crashAppData = struct{ FpOrig uintptr }
 41803  
 41804  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 41805  	bp := tls.Alloc(8)
 41806  	defer tls.Free(8)
 41807  
 41808  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41809  	var rc int32
 41810  	var pWrapper uintptr = pFile
 41811  	var pReal uintptr = pWrapper + 1*56
 41812  
 41813  	libc.Xmemset(tls, pWrapper, 0, uint64(unsafe.Sizeof(CrashFile{})))
 41814  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 41815  
 41816  	if rc == SQLITE_OK {
 41817  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 41818  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 41819  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 41820  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 41821  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 41822  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 41823  	}
 41824  	if rc == SQLITE_OK {
 41825  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 41826  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 41827  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 41828  			var iOff i64
 41829  
 41830  			libc.Xmemset(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint64((*CrashFile)(unsafe.Pointer(pWrapper)).FnData))
 41831  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 41832  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 41833  				if nRead > 512 {
 41834  					nRead = 512
 41835  				}
 41836  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 41837  			}
 41838  		} else {
 41839  			rc = SQLITE_NOMEM
 41840  		}
 41841  	}
 41842  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 41843  		sqlite3.Xsqlite3OsClose(tls, pFile)
 41844  	}
 41845  	return rc
 41846  }
 41847  
 41848  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 41849  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41850  	return (*struct {
 41851  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 41852  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 41853  }
 41854  
 41855  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 41856  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41857  	return (*struct {
 41858  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41859  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 41860  }
 41861  
 41862  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 41863  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41864  	return (*struct {
 41865  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41866  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 41867  }
 41868  
 41869  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 41870  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41871  	return (*struct {
 41872  		f func(*libc.TLS, uintptr, uintptr) uintptr
 41873  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 41874  }
 41875  
 41876  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 41877  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41878  	(*struct {
 41879  		f func(*libc.TLS, uintptr, int32, uintptr)
 41880  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 41881  }
 41882  
 41883  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 41884  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41885  	return (*struct {
 41886  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 41887  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 41888  }
 41889  
 41890  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 41891  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41892  	(*struct {
 41893  		f func(*libc.TLS, uintptr, uintptr)
 41894  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 41895  }
 41896  
 41897  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 41898  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41899  	return (*struct {
 41900  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41901  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 41902  }
 41903  
 41904  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 41905  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41906  	return (*struct {
 41907  		f func(*libc.TLS, uintptr, int32) int32
 41908  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 41909  }
 41910  
 41911  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 41912  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41913  	return (*struct {
 41914  		f func(*libc.TLS, uintptr, uintptr) int32
 41915  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 41916  }
 41917  
 41918  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 41919  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41920  	return (*struct {
 41921  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41922  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 41923  }
 41924  
 41925  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 41926  	bp := tls.Alloc(316)
 41927  	defer tls.Free(316)
 41928  
 41929  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 88)) = [14]DeviceFlag{
 41930  		{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 41931  		{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 41932  		{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 41933  		{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 41934  		{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 41935  		{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 41936  		{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 41937  		{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 41938  		{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 41939  		{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 41940  		{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 41941  		{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 41942  		{FzName: ts + 26529, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 41943  		{},
 41944  	}
 41945  	var i int32
 41946  	var iDc int32 = 0
 41947  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 41948  	var setSectorsize int32 = 0
 41949  	var setDeviceChar int32 = 0
 41950  
 41951  	for i = 0; i < objc; i = i + 2 {
 41952  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+64)
 41953  
 41954  		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) &&
 41955  			(*(*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) {
 41956  			tcl.XTcl_AppendResult(tls, interp,
 41957  				libc.VaList(bp, ts+26571, zOpt,
 41958  					ts+26585, 0))
 41959  			return TCL_ERROR
 41960  		}
 41961  		if i == objc-1 {
 41962  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26633, zOpt, ts+11945, 0))
 41963  			return TCL_ERROR
 41964  		}
 41965  
 41966  		if int32(*(*uint8)(unsafe.Pointer(zOpt + 1))) == 's' {
 41967  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+68) != 0 {
 41968  				return TCL_ERROR
 41969  			}
 41970  			setSectorsize = 1
 41971  		} else {
 41972  			var j int32
 41973  
 41974  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+72, bp+80) != 0 {
 41975  				return TCL_ERROR
 41976  			}
 41977  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 41978  				var rc int32
 41979  
 41980  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(j)*8)))
 41981  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 41982  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 41983  
 41984  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 41985  					interp, pFlag, bp+88, int32(unsafe.Sizeof(DeviceFlag{})), ts+26664, 0, bp+312)
 41986  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 41987  					var _objPtr uintptr = pFlag
 41988  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 41989  						tcl.XTclFreeObj(tls, _objPtr)
 41990  					}
 41991  				}
 41992  				if rc != 0 {
 41993  					return TCL_ERROR
 41994  				}
 41995  
 41996  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+88+uintptr(*(*int32)(unsafe.Pointer(bp + 312)))*16)).FiValue
 41997  			}
 41998  			setDeviceChar = 1
 41999  		}
 42000  	}
 42001  
 42002  	if setDeviceChar != 0 {
 42003  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 42004  	}
 42005  	if setSectorsize != 0 {
 42006  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 42007  	}
 42008  
 42009  	return TCL_OK
 42010  }
 42011  
 42012  type DeviceFlag = struct {
 42013  	FzName       uintptr
 42014  	FiValue      int32
 42015  	F__ccgo_pad1 [4]byte
 42016  }
 42017  
 42018  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42019  	if objc != 1 {
 42020  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42021  		return TCL_ERROR
 42022  	}
 42023  	writeListSync(tls, uintptr(0), 1)
 42024  
 42025  	return TCL_OK
 42026  }
 42027  
 42028  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42029  	bp := tls.Alloc(8)
 42030  	defer tls.Free(8)
 42031  
 42032  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 42033  
 42034  	if objc != 2 && objc != 3 {
 42035  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26677)
 42036  		return TCL_ERROR
 42037  	}
 42038  
 42039  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 42040  		return TCL_ERROR
 42041  	}
 42042  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 42043  		return TCL_ERROR
 42044  	}
 42045  
 42046  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 42047  		return TCL_OK
 42048  	}
 42049  
 42050  	if crashVfs.FpAppData == uintptr(0) {
 42051  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 42052  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 42053  		crashVfs.FpAppData = pOriginalVfs
 42054  		crashVfs.FszOsFile = int32(uint64(unsafe.Sizeof(CrashFile{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 42055  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 42056  	} else {
 42057  		crashVfs.FpAppData = uintptr(0)
 42058  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 42059  	}
 42060  
 42061  	return TCL_OK
 42062  }
 42063  
 42064  var crashVfs = sqlite3_vfs{
 42065  	FiVersion:      2,
 42066  	FzName:         ts + 26694,
 42067  	FxOpen:         0,
 42068  	FxDelete:       0,
 42069  	FxAccess:       0,
 42070  	FxFullPathname: 0,
 42071  	FxDlOpen:       0,
 42072  	FxDlError:      0,
 42073  	FxDlSym:        0,
 42074  	FxDlClose:      0,
 42075  	FxRandomness:   0,
 42076  	FxSleep:        0,
 42077  	FxCurrentTime:  0,
 42078  	FxGetLastError: 0,
 42079  }
 42080  
 42081  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42082  	bp := tls.Alloc(48)
 42083  	defer tls.Free(48)
 42084  
 42085  	var zCrashFile uintptr
 42086  
 42087  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 42088  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 42089  
 42090  	if !(objc < 3) {
 42091  		goto __1
 42092  	}
 42093  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26700)
 42094  	goto error
 42095  __1:
 42096  	;
 42097  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+32)
 42098  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 32))) >= uint64(unsafe.Sizeof([500]uint8{}))) {
 42099  		goto __2
 42100  	}
 42101  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26726, zCrashFile, ts+11945, 0))
 42102  	goto error
 42103  __2:
 42104  	;
 42105  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+36) != 0) {
 42106  		goto __3
 42107  	}
 42108  	goto error
 42109  __3:
 42110  	;
 42111  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*8, bp+40, bp+44) != 0) {
 42112  		goto __4
 42113  	}
 42114  	return TCL_ERROR
 42115  __4:
 42116  	;
 42117  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 42118  		goto __5
 42119  	}
 42120  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 42121  __5:
 42122  	;
 42123  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 42124  		goto __6
 42125  	}
 42126  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 42127  __6:
 42128  	;
 42129  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 42130  	libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+28, zCrashFile, uint64(*(*int32)(unsafe.Pointer(bp + 32))+1))
 42131  	sqlite3CrashTestEnable = 1
 42132  	return TCL_OK
 42133  
 42134  error:
 42135  	return TCL_ERROR
 42136  }
 42137  
 42138  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42139  	bp := tls.Alloc(8)
 42140  	defer tls.Free(8)
 42141  
 42142  	*(*int32)(unsafe.Pointer(bp)) = -1
 42143  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 42144  
 42145  	if processDevSymArgs(tls, interp, objc-1, objv+1*8, bp, bp+4) != 0 {
 42146  		return TCL_ERROR
 42147  	}
 42148  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 42149  
 42150  	return TCL_OK
 42151  }
 42152  
 42153  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42154  	bp := tls.Alloc(4)
 42155  	defer tls.Free(4)
 42156  
 42157  	*(*int32)(unsafe.Pointer(bp)) = 0
 42158  
 42159  	if objc != 2 {
 42160  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26750)
 42161  		return TCL_ERROR
 42162  	}
 42163  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 42164  		return TCL_ERROR
 42165  	}
 42166  
 42167  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 42168  	return TCL_OK
 42169  }
 42170  
 42171  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42172  	if objc != 1 {
 42173  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42174  		return TCL_ERROR
 42175  	}
 42176  
 42177  	devsym_unregister(tls)
 42178  	return TCL_OK
 42179  }
 42180  
 42181  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42182  	bp := tls.Alloc(48)
 42183  	defer tls.Free(48)
 42184  
 42185  	var zParent uintptr = uintptr(0)
 42186  
 42187  	if objc != 2 && objc != 3 {
 42188  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26757)
 42189  		return TCL_ERROR
 42190  	}
 42191  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 42192  	if objc == 3 {
 42193  		if libc.Xstrcmp(tls, zParent, ts+26779) != 0 {
 42194  			tcl.XTcl_AppendResult(tls, interp,
 42195  				libc.VaList(bp, ts+11851, zParent, ts+26788, 0))
 42196  			return TCL_ERROR
 42197  		}
 42198  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 42199  	}
 42200  
 42201  	if !(int32(*(*uint8)(unsafe.Pointer(zParent))) != 0) {
 42202  		zParent = uintptr(0)
 42203  	}
 42204  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 42205  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26808, 0))
 42206  		return TCL_ERROR
 42207  	}
 42208  
 42209  	return TCL_OK
 42210  }
 42211  
 42212  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42213  	if objc != 1 {
 42214  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42215  		return TCL_ERROR
 42216  	}
 42217  
 42218  	jt_unregister(tls)
 42219  	return TCL_OK
 42220  }
 42221  
 42222  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 42223  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26829, *(*uintptr)(unsafe.Pointer(&struct {
 42224  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42225  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 42226  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26850, *(*uintptr)(unsafe.Pointer(&struct {
 42227  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42228  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 42229  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26870, *(*uintptr)(unsafe.Pointer(&struct {
 42230  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42231  	}{crashNowCmd})), uintptr(0), uintptr(0))
 42232  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26888, *(*uintptr)(unsafe.Pointer(&struct {
 42233  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42234  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 42235  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26912, *(*uintptr)(unsafe.Pointer(&struct {
 42236  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42237  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 42238  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26935, *(*uintptr)(unsafe.Pointer(&struct {
 42239  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42240  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 42241  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26953, *(*uintptr)(unsafe.Pointer(&struct {
 42242  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42243  	}{jtObjCmd})), uintptr(0), uintptr(0))
 42244  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26969, *(*uintptr)(unsafe.Pointer(&struct {
 42245  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42246  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 42247  	return TCL_OK
 42248  }
 42249  
 42250  type Thread1 = struct {
 42251  	FzFilename   uintptr
 42252  	FxOp         uintptr
 42253  	FzArg        uintptr
 42254  	Fopnum       int32
 42255  	Fbusy        int32
 42256  	Fcompleted   int32
 42257  	F__ccgo_pad1 [4]byte
 42258  	Fdb          uintptr
 42259  	FpStmt       uintptr
 42260  	FzErr        uintptr
 42261  	FzStaticErr  uintptr
 42262  	Frc          int32
 42263  	Fargc        int32
 42264  	Fargv        [100]uintptr
 42265  	Fcolv        [100]uintptr
 42266  	FnServer     int32
 42267  	F__ccgo_pad2 [4]byte
 42268  }
 42269  
 42270  var threadset1 [26]Thread1
 42271  
 42272  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 42273  	var p uintptr = pArg
 42274  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42275  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42276  	}
 42277  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+40)
 42278  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 42279  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 42280  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42281  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42282  	}
 42283  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42284  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 42285  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42286  		libc.Xsched_yield(tls)
 42287  	}
 42288  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 42289  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42290  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42291  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42292  		}
 42293  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 42294  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42295  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42296  			libc.Xsched_yield(tls)
 42297  		}
 42298  	}
 42299  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42300  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42301  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42302  	}
 42303  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42304  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42305  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42306  	}
 42307  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42308  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42309  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42310  	}
 42311  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42312  	sqlite3.Xsqlite3_thread_cleanup(tls)
 42313  	return uintptr(0)
 42314  }
 42315  
 42316  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 42317  	bp := tls.Alloc(16)
 42318  	defer tls.Free(16)
 42319  
 42320  	if zArg == uintptr(0) || int32(*(*uint8)(unsafe.Pointer(zArg))) == 0 || int32(*(*uint8)(unsafe.Pointer(zArg + 1))) != 0 || !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zArg))))*2)))&int32(_ISupper) != 0) {
 42321  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 42322  		return -1
 42323  	}
 42324  	return int32(*(*uint8)(unsafe.Pointer(zArg))) - 'A'
 42325  }
 42326  
 42327  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42328  	bp := tls.Alloc(96)
 42329  	defer tls.Free(96)
 42330  
 42331  	var i int32
 42332  
 42333  	var rc int32
 42334  
 42335  	if argc != 3 {
 42336  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42337  			ts+25780, 0))
 42338  		return TCL_ERROR
 42339  	}
 42340  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42341  	if i < 0 {
 42342  		return TCL_ERROR
 42343  	}
 42344  	if threadset1[i].Fbusy != 0 {
 42345  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 42346  		return TCL_ERROR
 42347  	}
 42348  	threadset1[i].Fbusy = 1
 42349  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42350  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42351  	threadset1[i].Fopnum = 1
 42352  	threadset1[i].Fcompleted = 0
 42353  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 42354  		f func(*libc.TLS, uintptr) uintptr
 42355  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42356  	if rc != 0 {
 42357  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 42358  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42359  		threadset1[i].Fbusy = 0
 42360  		return TCL_ERROR
 42361  	}
 42362  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 42363  	if threadset1[i].FnServer == 0 {
 42364  		threadset1[i].FnServer = 1
 42365  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688+1680)
 42366  	}
 42367  	return TCL_OK
 42368  }
 42369  
 42370  func client_wait(tls *libc.TLS, p uintptr) {
 42371  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42372  		libc.Xsched_yield(tls)
 42373  	}
 42374  }
 42375  
 42376  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42377  	bp := tls.Alloc(48)
 42378  	defer tls.Free(48)
 42379  
 42380  	var i int32
 42381  
 42382  	if argc != 2 {
 42383  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42384  			ts+25849, 0))
 42385  		return TCL_ERROR
 42386  	}
 42387  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42388  	if i < 0 {
 42389  		return TCL_ERROR
 42390  	}
 42391  	if !(threadset1[i].Fbusy != 0) {
 42392  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42393  		return TCL_ERROR
 42394  	}
 42395  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42396  	return TCL_OK
 42397  }
 42398  
 42399  func stop_thread(tls *libc.TLS, p uintptr) {
 42400  	client_wait(tls, p)
 42401  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 42402  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 42403  	client_wait(tls, p)
 42404  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 42405  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 42406  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 42407  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 42408  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 42409  }
 42410  
 42411  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42412  	bp := tls.Alloc(48)
 42413  	defer tls.Free(48)
 42414  
 42415  	var i int32
 42416  
 42417  	if argc != 2 {
 42418  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42419  			ts+25849, 0))
 42420  		return TCL_ERROR
 42421  	}
 42422  	if int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 42423  		for i = 0; i < N_THREAD; i++ {
 42424  			if threadset1[i].Fbusy != 0 {
 42425  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42426  			}
 42427  		}
 42428  	} else {
 42429  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42430  		if i < 0 {
 42431  			return TCL_ERROR
 42432  		}
 42433  		if !(threadset1[i].Fbusy != 0) {
 42434  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42435  			return TCL_ERROR
 42436  		}
 42437  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42438  	}
 42439  
 42440  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 42441  	}
 42442  	if i >= N_THREAD {
 42443  		sqlite3_server_stop(tls)
 42444  		for 1 != 0 {
 42445  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 42446  			}
 42447  			if i == N_THREAD {
 42448  				break
 42449  			}
 42450  			libc.Xsched_yield(tls)
 42451  		}
 42452  	}
 42453  	return TCL_OK
 42454  }
 42455  
 42456  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42457  	bp := tls.Alloc(172)
 42458  	defer tls.Free(172)
 42459  
 42460  	var i int32
 42461  
 42462  	if argc != 2 {
 42463  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42464  			ts+25849, 0))
 42465  		return TCL_ERROR
 42466  	}
 42467  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42468  	if i < 0 {
 42469  		return TCL_ERROR
 42470  	}
 42471  	if !(threadset1[i].Fbusy != 0) {
 42472  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42473  		return TCL_ERROR
 42474  	}
 42475  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42476  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 42477  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 42478  	return TCL_OK
 42479  }
 42480  
 42481  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42482  	bp := tls.Alloc(84)
 42483  	defer tls.Free(84)
 42484  
 42485  	var i int32
 42486  
 42487  	if argc != 3 {
 42488  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42489  			ts+25868, 0))
 42490  		return TCL_ERROR
 42491  	}
 42492  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42493  	if i < 0 {
 42494  		return TCL_ERROR
 42495  	}
 42496  	if !(threadset1[i].Fbusy != 0) {
 42497  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42498  		return TCL_ERROR
 42499  	}
 42500  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 42501  		return TCL_ERROR
 42502  	}
 42503  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42504  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42505  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42506  		return TCL_ERROR
 42507  	}
 42508  	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))
 42509  	return TCL_OK
 42510  }
 42511  
 42512  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42513  	bp := tls.Alloc(84)
 42514  	defer tls.Free(84)
 42515  
 42516  	var i int32
 42517  
 42518  	if argc != 3 {
 42519  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42520  			ts+25868, 0))
 42521  		return TCL_ERROR
 42522  	}
 42523  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42524  	if i < 0 {
 42525  		return TCL_ERROR
 42526  	}
 42527  	if !(threadset1[i].Fbusy != 0) {
 42528  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42529  		return TCL_ERROR
 42530  	}
 42531  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 42532  		return TCL_ERROR
 42533  	}
 42534  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42535  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42536  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42537  		return TCL_ERROR
 42538  	}
 42539  	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))
 42540  	return TCL_OK
 42541  }
 42542  
 42543  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42544  	bp := tls.Alloc(64)
 42545  	defer tls.Free(64)
 42546  
 42547  	var i int32
 42548  	var zName uintptr
 42549  
 42550  	if argc != 2 {
 42551  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42552  			ts+25849, 0))
 42553  		return TCL_ERROR
 42554  	}
 42555  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42556  	if i < 0 {
 42557  		return TCL_ERROR
 42558  	}
 42559  	if !(threadset1[i].Fbusy != 0) {
 42560  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42561  		return TCL_ERROR
 42562  	}
 42563  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42564  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 42565  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 42566  	return TCL_OK
 42567  }
 42568  
 42569  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42570  	bp := tls.Alloc(64)
 42571  	defer tls.Free(64)
 42572  
 42573  	var i int32
 42574  
 42575  	if argc != 2 {
 42576  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42577  			ts+25849, 0))
 42578  		return TCL_ERROR
 42579  	}
 42580  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42581  	if i < 0 {
 42582  		return TCL_ERROR
 42583  	}
 42584  	if !(threadset1[i].Fbusy != 0) {
 42585  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42586  		return TCL_ERROR
 42587  	}
 42588  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42589  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 42590  	return TCL_OK
 42591  }
 42592  
 42593  func do_compile1(tls *libc.TLS, p uintptr) {
 42594  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 42595  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 42596  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42597  		return
 42598  	}
 42599  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42600  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42601  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42602  	}
 42603  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 42604  }
 42605  
 42606  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42607  	bp := tls.Alloc(56)
 42608  	defer tls.Free(56)
 42609  
 42610  	var i int32
 42611  	if argc != 3 {
 42612  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42613  			ts+25921, 0))
 42614  		return TCL_ERROR
 42615  	}
 42616  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42617  	if i < 0 {
 42618  		return TCL_ERROR
 42619  	}
 42620  	if !(threadset1[i].Fbusy != 0) {
 42621  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42622  		return TCL_ERROR
 42623  	}
 42624  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42625  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 42626  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42627  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42628  	threadset1[i].Fopnum++
 42629  	return TCL_OK
 42630  }
 42631  
 42632  func do_step1(tls *libc.TLS, p uintptr) {
 42633  	var i int32
 42634  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42635  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42636  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42637  		return
 42638  	}
 42639  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42640  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 42641  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42642  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 42643  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42644  		}
 42645  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 42646  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42647  		}
 42648  	}
 42649  }
 42650  
 42651  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42652  	bp := tls.Alloc(48)
 42653  	defer tls.Free(48)
 42654  
 42655  	var i int32
 42656  	if argc != 2 {
 42657  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42658  			ts+25958, 0))
 42659  		return TCL_ERROR
 42660  	}
 42661  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42662  	if i < 0 {
 42663  		return TCL_ERROR
 42664  	}
 42665  	if !(threadset1[i].Fbusy != 0) {
 42666  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42667  		return TCL_ERROR
 42668  	}
 42669  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42670  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 42671  	threadset1[i].Fopnum++
 42672  	return TCL_OK
 42673  }
 42674  
 42675  func do_finalize1(tls *libc.TLS, p uintptr) {
 42676  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42677  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42678  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42679  		return
 42680  	}
 42681  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42682  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42683  }
 42684  
 42685  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42686  	bp := tls.Alloc(48)
 42687  	defer tls.Free(48)
 42688  
 42689  	var i int32
 42690  	if argc != 2 {
 42691  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42692  			ts+25958, 0))
 42693  		return TCL_ERROR
 42694  	}
 42695  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42696  	if i < 0 {
 42697  		return TCL_ERROR
 42698  	}
 42699  	if !(threadset1[i].Fbusy != 0) {
 42700  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42701  		return TCL_ERROR
 42702  	}
 42703  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42704  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 42705  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42706  	threadset1[i].FzArg = uintptr(0)
 42707  	threadset1[i].Fopnum++
 42708  	return TCL_OK
 42709  }
 42710  
 42711  func do_reset(tls *libc.TLS, p uintptr) {
 42712  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42713  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42714  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42715  		return
 42716  	}
 42717  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42718  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42719  }
 42720  
 42721  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42722  	bp := tls.Alloc(48)
 42723  	defer tls.Free(48)
 42724  
 42725  	var i int32
 42726  	if argc != 2 {
 42727  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42728  			ts+25958, 0))
 42729  		return TCL_ERROR
 42730  	}
 42731  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42732  	if i < 0 {
 42733  		return TCL_ERROR
 42734  	}
 42735  	if !(threadset1[i].Fbusy != 0) {
 42736  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42737  		return TCL_ERROR
 42738  	}
 42739  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42740  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 42741  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42742  	threadset1[i].FzArg = uintptr(0)
 42743  	threadset1[i].Fopnum++
 42744  	return TCL_OK
 42745  }
 42746  
 42747  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42748  	bp := tls.Alloc(64)
 42749  	defer tls.Free(64)
 42750  
 42751  	var i int32
 42752  	var j int32
 42753  	var temp uintptr
 42754  	if argc != 3 {
 42755  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42756  			ts+25963, 0))
 42757  		return TCL_ERROR
 42758  	}
 42759  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42760  	if i < 0 {
 42761  		return TCL_ERROR
 42762  	}
 42763  	if !(threadset1[i].Fbusy != 0) {
 42764  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42765  		return TCL_ERROR
 42766  	}
 42767  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42768  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 42769  	if j < 0 {
 42770  		return TCL_ERROR
 42771  	}
 42772  	if !(threadset1[j].Fbusy != 0) {
 42773  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 42774  		return TCL_ERROR
 42775  	}
 42776  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*1688)
 42777  	temp = threadset1[i].Fdb
 42778  	threadset1[i].Fdb = threadset1[j].Fdb
 42779  	threadset1[j].Fdb = temp
 42780  	return TCL_OK
 42781  }
 42782  
 42783  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 42784  	var i int32
 42785  
 42786  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd6))/uint64(unsafe.Sizeof(struct {
 42787  		FzName uintptr
 42788  		FxProc uintptr
 42789  	}{})); i++ {
 42790  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 42791  	}
 42792  	return TCL_OK
 42793  }
 42794  
 42795  var aCmd6 = [13]struct {
 42796  	FzName uintptr
 42797  	FxProc uintptr
 42798  }{
 42799  	{FzName: ts + 26987, FxProc: 0},
 42800  	{FzName: ts + 27001, FxProc: 0},
 42801  	{FzName: ts + 27013, FxProc: 0},
 42802  	{FzName: ts + 27025, FxProc: 0},
 42803  	{FzName: ts + 27037, FxProc: 0},
 42804  	{FzName: ts + 27049, FxProc: 0},
 42805  	{FzName: ts + 27064, FxProc: 0},
 42806  	{FzName: ts + 27078, FxProc: 0},
 42807  	{FzName: ts + 27091, FxProc: 0},
 42808  	{FzName: ts + 27106, FxProc: 0},
 42809  	{FzName: ts + 27118, FxProc: 0},
 42810  	{FzName: ts + 27131, FxProc: 0},
 42811  	{FzName: ts + 27147, FxProc: 0},
 42812  }
 42813  
 42814  type echo_vtab1 = struct {
 42815  	Fbase          sqlite3_vtab
 42816  	Finterp        uintptr
 42817  	Fdb            uintptr
 42818  	FisPattern     int32
 42819  	FinTransaction int32
 42820  	FzThis         uintptr
 42821  	FzTableName    uintptr
 42822  	FzLogName      uintptr
 42823  	FnCol          int32
 42824  	F__ccgo_pad1   [4]byte
 42825  	FaIndex        uintptr
 42826  	FaCol          uintptr
 42827  }
 42828  
 42829  type echo_vtab = echo_vtab1
 42830  type echo_cursor1 = struct {
 42831  	Fbase  sqlite3_vtab_cursor
 42832  	FpStmt uintptr
 42833  }
 42834  
 42835  type echo_cursor = echo_cursor1
 42836  
 42837  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 42838  	bp := tls.Alloc(152)
 42839  	defer tls.Free(152)
 42840  
 42841  	var zErr uintptr
 42842  
 42843  	*(*uint8)(unsafe.Pointer(bp + 24 + 127)) = uint8(0)
 42844  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27159, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 42845  	zErr = tcl.XTcl_GetVar2(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, uintptr(0), TCL_GLOBAL_ONLY)
 42846  	if zErr != 0 {
 42847  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+16, zErr))
 42848  	}
 42849  	return libc.Bool32(zErr != uintptr(0))
 42850  }
 42851  
 42852  func dequoteString(tls *libc.TLS, z uintptr) {
 42853  	var quote int32
 42854  	var i int32
 42855  	var j int32
 42856  	if z == uintptr(0) {
 42857  		return
 42858  	}
 42859  	quote = int32(*(*uint8)(unsafe.Pointer(z)))
 42860  	switch quote {
 42861  	case '\'':
 42862  		break
 42863  	case '"':
 42864  		break
 42865  	case '`':
 42866  		break
 42867  	case '[':
 42868  		quote = ']'
 42869  		break
 42870  	default:
 42871  		return
 42872  	}
 42873  	i = 1
 42874  	j = 0
 42875  	for ; *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 42876  		if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 42877  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 42878  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(quote)
 42879  				i++
 42880  			} else {
 42881  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(0)
 42882  				break
 42883  			}
 42884  		} else {
 42885  			*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(i)))
 42886  		}
 42887  	}
 42888  }
 42889  
 42890  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 42891  	bp := tls.Alloc(24)
 42892  	defer tls.Free(24)
 42893  
 42894  	var aCol uintptr
 42895  	var zSql uintptr
 42896  
 42897  	var rc int32
 42898  	var nCol int32
 42899  	var zName uintptr
 42900  	var ii int32
 42901  	var nBytes int32
 42902  	var zSpace uintptr
 42903  	aCol = uintptr(0)
 42904  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42905  	rc = SQLITE_OK
 42906  	nCol = 0
 42907  
 42908  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27203, libc.VaList(bp, zTab))
 42909  	if !!(zSql != 0) {
 42910  		goto __1
 42911  	}
 42912  	rc = SQLITE_NOMEM
 42913  	goto out
 42914  __1:
 42915  	;
 42916  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42917  	sqlite3.Xsqlite3_free(tls, zSql)
 42918  
 42919  	if !(rc == SQLITE_OK) {
 42920  		goto __2
 42921  	}
 42922  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42923  
 42924  	nBytes = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(nCol))
 42925  	ii = 0
 42926  __3:
 42927  	if !(ii < nCol) {
 42928  		goto __5
 42929  	}
 42930  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 42931  	if !!(zName != 0) {
 42932  		goto __6
 42933  	}
 42934  	rc = SQLITE_NOMEM
 42935  	goto out
 42936  __6:
 42937  	;
 42938  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 42939  	goto __4
 42940  __4:
 42941  	ii++
 42942  	goto __3
 42943  	goto __5
 42944  __5:
 42945  	;
 42946  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 42947  	if !!(aCol != 0) {
 42948  		goto __7
 42949  	}
 42950  	rc = SQLITE_NOMEM
 42951  	goto out
 42952  __7:
 42953  	;
 42954  	zSpace = aCol + uintptr(nCol)*8
 42955  	ii = 0
 42956  __8:
 42957  	if !(ii < nCol) {
 42958  		goto __10
 42959  	}
 42960  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*8)) = zSpace
 42961  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 42962  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 42963  	goto __9
 42964  __9:
 42965  	ii++
 42966  	goto __8
 42967  	goto __10
 42968  __10:
 42969  	;
 42970  __2:
 42971  	;
 42972  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 42973  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 42974  
 42975  out:
 42976  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42977  	return rc
 42978  }
 42979  
 42980  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 42981  	bp := tls.Alloc(32)
 42982  	defer tls.Free(32)
 42983  
 42984  	var aIndex uintptr
 42985  	var rc int32
 42986  	var zSql uintptr
 42987  	var cid int32
 42988  	var zIdx uintptr
 42989  
 42990  	var rc2 int32
 42991  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42992  	aIndex = uintptr(0)
 42993  
 42994  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(nCol))
 42995  	if !!(aIndex != 0) {
 42996  		goto __1
 42997  	}
 42998  	rc = SQLITE_NOMEM
 42999  	goto get_index_array_out
 43000  __1:
 43001  	;
 43002  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27220, libc.VaList(bp, zTab))
 43003  	if !!(zSql != 0) {
 43004  		goto __2
 43005  	}
 43006  	rc = SQLITE_NOMEM
 43007  	goto get_index_array_out
 43008  __2:
 43009  	;
 43010  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 43011  	sqlite3.Xsqlite3_free(tls, zSql)
 43012  
 43013  __3:
 43014  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 43015  		goto __4
 43016  	}
 43017  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 43018  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 43019  	if !(zIdx == uintptr(0)) {
 43020  		goto __5
 43021  	}
 43022  	goto __3
 43023  __5:
 43024  	;
 43025  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27242, libc.VaList(bp+8, zIdx))
 43026  	if !!(zSql != 0) {
 43027  		goto __6
 43028  	}
 43029  	rc = SQLITE_NOMEM
 43030  	goto get_index_array_out
 43031  __6:
 43032  	;
 43033  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+24, uintptr(0))
 43034  	sqlite3.Xsqlite3_free(tls, zSql)
 43035  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW) {
 43036  		goto __7
 43037  	}
 43038  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
 43039  
 43040  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 43041  __7:
 43042  	;
 43043  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0) {
 43044  		goto __8
 43045  	}
 43046  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43047  __8:
 43048  	;
 43049  	if !(rc != SQLITE_OK) {
 43050  		goto __9
 43051  	}
 43052  	goto get_index_array_out
 43053  __9:
 43054  	;
 43055  	goto __3
 43056  __4:
 43057  	;
 43058  get_index_array_out:
 43059  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 43060  		goto __10
 43061  	}
 43062  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 43063  	if !(rc == SQLITE_OK) {
 43064  		goto __11
 43065  	}
 43066  	rc = rc2
 43067  __11:
 43068  	;
 43069  __10:
 43070  	;
 43071  	if !(rc != SQLITE_OK) {
 43072  		goto __12
 43073  	}
 43074  	sqlite3.Xsqlite3_free(tls, aIndex)
 43075  	aIndex = uintptr(0)
 43076  __12:
 43077  	;
 43078  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 43079  	return rc
 43080  }
 43081  
 43082  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 43083  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 43084  	tcl.XTcl_SetVar2(tls, interp, ts+27264, uintptr(0), func() uintptr {
 43085  		if zArg != 0 {
 43086  			return zArg
 43087  		}
 43088  		return ts + 584
 43089  	}(), flags)
 43090  }
 43091  
 43092  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 43093  	bp := tls.Alloc(8)
 43094  	defer tls.Free(8)
 43095  
 43096  	var rc int32 = SQLITE_OK
 43097  
 43098  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 43099  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 43100  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 43101  			ts+27276,
 43102  			-1, bp, uintptr(0))
 43103  		if rc == SQLITE_OK {
 43104  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 43105  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 43106  				var rc2 int32
 43107  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 43108  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 43109  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 43110  				if rc == SQLITE_OK {
 43111  					rc = rc2
 43112  				}
 43113  			} else {
 43114  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 43115  				if rc == SQLITE_OK {
 43116  					rc = SQLITE_ERROR
 43117  				}
 43118  			}
 43119  			if rc == SQLITE_OK {
 43120  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+88, pVtab+72)
 43121  			}
 43122  			if rc == SQLITE_OK {
 43123  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+80)
 43124  			}
 43125  		}
 43126  	}
 43127  
 43128  	return rc
 43129  }
 43130  
 43131  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 43132  	var p uintptr = pVtab
 43133  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 43134  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 43135  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 43136  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 43137  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 43138  	sqlite3.Xsqlite3_free(tls, p)
 43139  	return 0
 43140  }
 43141  
 43142  type EchoModule1 = struct {
 43143  	Finterp uintptr
 43144  	Fdb     uintptr
 43145  }
 43146  
 43147  type EchoModule = EchoModule1
 43148  
 43149  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43150  	bp := tls.Alloc(32)
 43151  	defer tls.Free(32)
 43152  
 43153  	var rc int32
 43154  	var i int32
 43155  	var pVtab uintptr
 43156  
 43157  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 43158  	if !(pVtab != 0) {
 43159  		return SQLITE_NOMEM
 43160  	}
 43161  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 43162  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 43163  
 43164  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 43165  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 43166  		echoDestructor(tls, pVtab)
 43167  		return SQLITE_NOMEM
 43168  	}
 43169  
 43170  	if argc > 3 {
 43171  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 43172  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 43173  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*uint8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 43174  			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))
 43175  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 43176  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 43177  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 43178  		}
 43179  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 43180  			echoDestructor(tls, pVtab)
 43181  			return SQLITE_NOMEM
 43182  		}
 43183  	}
 43184  
 43185  	for i = 0; i < argc; i++ {
 43186  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 43187  	}
 43188  
 43189  	rc = echoDeclareVtab(tls, pVtab, db)
 43190  	if rc != SQLITE_OK {
 43191  		echoDestructor(tls, pVtab)
 43192  		return rc
 43193  	}
 43194  
 43195  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 43196  	return SQLITE_OK
 43197  }
 43198  
 43199  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43200  	bp := tls.Alloc(24)
 43201  	defer tls.Free(24)
 43202  
 43203  	var rc int32 = SQLITE_OK
 43204  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27345)
 43205  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 43206  
 43207  	if rc == SQLITE_OK && argc == 5 {
 43208  		var zSql uintptr
 43209  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 43210  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*8))))
 43211  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27353, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 43212  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 43213  		sqlite3.Xsqlite3_free(tls, zSql)
 43214  		if rc != SQLITE_OK {
 43215  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 43216  		}
 43217  	}
 43218  
 43219  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 43220  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 43221  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 43222  	}
 43223  
 43224  	if rc == SQLITE_OK {
 43225  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 43226  	}
 43227  
 43228  	return rc
 43229  }
 43230  
 43231  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43232  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27377)
 43233  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 43234  }
 43235  
 43236  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 43237  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27386)
 43238  	return echoDestructor(tls, pVtab)
 43239  }
 43240  
 43241  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 43242  	bp := tls.Alloc(8)
 43243  	defer tls.Free(8)
 43244  
 43245  	var rc int32 = SQLITE_OK
 43246  	var p uintptr = pVtab
 43247  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27398)
 43248  
 43249  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 43250  		var zSql uintptr
 43251  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27407, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 43252  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43253  		sqlite3.Xsqlite3_free(tls, zSql)
 43254  	}
 43255  
 43256  	if rc == SQLITE_OK {
 43257  		rc = echoDestructor(tls, pVtab)
 43258  	}
 43259  	return rc
 43260  }
 43261  
 43262  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 43263  	var pCur uintptr
 43264  	if simulateVtabError(tls, pVTab, ts+27421) != 0 {
 43265  		return SQLITE_ERROR
 43266  	}
 43267  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 43268  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 43269  	return func() int32 {
 43270  		if pCur != 0 {
 43271  			return SQLITE_OK
 43272  		}
 43273  		return SQLITE_NOMEM
 43274  	}()
 43275  }
 43276  
 43277  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 43278  	var rc int32
 43279  	var pCur uintptr = cur
 43280  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 43281  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43282  	sqlite3.Xsqlite3_free(tls, pCur)
 43283  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 43284  	return rc
 43285  }
 43286  
 43287  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 43288  	return func() int32 {
 43289  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 43290  			return 0
 43291  		}
 43292  		return 1
 43293  	}()
 43294  }
 43295  
 43296  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 43297  	var rc int32 = SQLITE_OK
 43298  	var pCur uintptr = cur
 43299  
 43300  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27427) != 0 {
 43301  		return SQLITE_ERROR
 43302  	}
 43303  
 43304  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 43305  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43306  		if rc == SQLITE_ROW {
 43307  			rc = SQLITE_OK
 43308  		} else {
 43309  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43310  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43311  		}
 43312  	}
 43313  
 43314  	return rc
 43315  }
 43316  
 43317  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 43318  	var iCol int32 = i + 1
 43319  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43320  
 43321  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27433) != 0 {
 43322  		return SQLITE_ERROR
 43323  	}
 43324  
 43325  	if !(pStmt != 0) {
 43326  		sqlite3.Xsqlite3_result_null(tls, ctx)
 43327  	} else {
 43328  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 43329  	}
 43330  	return SQLITE_OK
 43331  }
 43332  
 43333  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 43334  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43335  
 43336  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 43337  		return SQLITE_ERROR
 43338  	}
 43339  
 43340  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 43341  	return SQLITE_OK
 43342  }
 43343  
 43344  func hashString(tls *libc.TLS, zString uintptr) int32 {
 43345  	var val u32 = u32(0)
 43346  	var ii int32
 43347  	for ii = 0; *(*uint8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 43348  		val = val<<3 + u32(int32(*(*uint8)(unsafe.Pointer(zString + uintptr(ii)))))
 43349  	}
 43350  	return int32(val & u32(0x7fffffff))
 43351  }
 43352  
 43353  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 43354  	var rc int32
 43355  	var i int32
 43356  
 43357  	var pCur uintptr = pVtabCursor
 43358  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43359  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43360  
 43361  	if simulateVtabError(tls, pVtab, ts+27441) != 0 {
 43362  		return SQLITE_ERROR
 43363  	}
 43364  
 43365  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27441)
 43366  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 43367  	for i = 0; i < argc; i++ {
 43368  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 43369  	}
 43370  
 43371  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43372  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43373  
 43374  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+8, uintptr(0))
 43375  
 43376  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 43377  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 43378  	}
 43379  
 43380  	if rc == SQLITE_OK {
 43381  		rc = echoNext(tls, pVtabCursor)
 43382  	}
 43383  
 43384  	return rc
 43385  }
 43386  
 43387  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 43388  	bp := tls.Alloc(24)
 43389  	defer tls.Free(24)
 43390  
 43391  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 43392  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 43393  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43394  	}
 43395  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 43396  		sqlite3.Xsqlite3_free(tls, zIn)
 43397  		zIn = uintptr(0)
 43398  	} else {
 43399  		if zIn != 0 {
 43400  			var zTemp uintptr = zIn
 43401  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp, zIn, zAppend))
 43402  			sqlite3.Xsqlite3_free(tls, zTemp)
 43403  		} else {
 43404  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 43405  		}
 43406  		if !(zIn != 0) {
 43407  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43408  		}
 43409  	}
 43410  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 43411  	if doFree != 0 {
 43412  		sqlite3.Xsqlite3_free(tls, zAppend)
 43413  	}
 43414  }
 43415  
 43416  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 43417  	bp := tls.Alloc(24)
 43418  	defer tls.Free(24)
 43419  
 43420  	var zRet uintptr = uintptr(0)
 43421  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 43422  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27449, 0)
 43423  	} else {
 43424  		var i int32
 43425  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 43426  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 43427  				if i >= 63 {
 43428  					return 63
 43429  				}
 43430  				return i
 43431  			}()) != 0 {
 43432  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27453, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*8))))
 43433  			} else {
 43434  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27460, libc.VaList(bp+16, zRet))
 43435  			}
 43436  			if !(zRet != 0) {
 43437  				break
 43438  			}
 43439  		}
 43440  	}
 43441  	return zRet
 43442  }
 43443  
 43444  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 43445  	bp := tls.Alloc(100)
 43446  	defer tls.Free(100)
 43447  
 43448  	var ii int32
 43449  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 43450  	var zCol uintptr = uintptr(0)
 43451  	var zNew uintptr
 43452  	var nArg int32 = 0
 43453  	var zSep uintptr = ts + 9392
 43454  	var pVtab uintptr = tab
 43455  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 43456  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43457  
 43458  	var nRow int32 = 0
 43459  	var useIdx int32 = 0
 43460  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 43461  	var useCost int32 = 0
 43462  	var cost float64 = float64(0)
 43463  	var isIgnoreUsable int32 = 0
 43464  	if tcl.XTcl_GetVar2(tls, interp, ts+27469, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43465  		isIgnoreUsable = 1
 43466  	}
 43467  
 43468  	if simulateVtabError(tls, pVtab, ts+27495) != 0 {
 43469  		return SQLITE_ERROR
 43470  	}
 43471  
 43472  	if tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43473  		cost = libc.Xatof(tls, tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY))
 43474  		useCost = 1
 43475  	} else {
 43476  		*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27523, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43477  		if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43478  			return SQLITE_NOMEM
 43479  		}
 43480  		*(*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))
 43481  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43482  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 43483  			return *(*int32)(unsafe.Pointer(bp + 96))
 43484  		}
 43485  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43486  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 43487  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43488  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 43489  			return *(*int32)(unsafe.Pointer(bp + 96))
 43490  		}
 43491  	}
 43492  
 43493  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 43494  	if !(zCol != 0) {
 43495  		return SQLITE_NOMEM
 43496  	}
 43497  	*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27547, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43498  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43499  		return SQLITE_NOMEM
 43500  	}
 43501  
 43502  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 43503  		var pConstraint uintptr
 43504  		var pUsage uintptr
 43505  		var iCol int32
 43506  
 43507  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 43508  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 43509  
 43510  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 43511  			continue
 43512  		}
 43513  
 43514  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 43515  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 43516  			var zNewCol uintptr
 43517  			if iCol >= 0 {
 43518  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 43519  			} else {
 43520  				zNewCol = ts + 6427
 43521  			}
 43522  			var zOp uintptr = uintptr(0)
 43523  			useIdx = 1
 43524  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 43525  			case SQLITE_INDEX_CONSTRAINT_EQ:
 43526  				zOp = ts + 27570
 43527  				break
 43528  				fallthrough
 43529  			case SQLITE_INDEX_CONSTRAINT_LT:
 43530  				zOp = ts + 27572
 43531  				break
 43532  				fallthrough
 43533  			case SQLITE_INDEX_CONSTRAINT_GT:
 43534  				zOp = ts + 27574
 43535  				break
 43536  				fallthrough
 43537  			case SQLITE_INDEX_CONSTRAINT_LE:
 43538  				zOp = ts + 27576
 43539  				break
 43540  				fallthrough
 43541  			case SQLITE_INDEX_CONSTRAINT_GE:
 43542  				zOp = ts + 27579
 43543  				break
 43544  				fallthrough
 43545  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 43546  				zOp = ts + 27582
 43547  				break
 43548  				fallthrough
 43549  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 43550  				zOp = ts + 27587
 43551  				break
 43552  				fallthrough
 43553  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 43554  				zOp = ts + 27592
 43555  				break
 43556  				fallthrough
 43557  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 43558  				zOp = ts + 6831
 43559  				break
 43560  			}
 43561  			if zOp != 0 {
 43562  				if int32(*(*uint8)(unsafe.Pointer(zOp))) == 'L' {
 43563  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27597,
 43564  						libc.VaList(bp+24, zSep, zNewCol))
 43565  				} else {
 43566  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27632, libc.VaList(bp+40, zSep, zNewCol, zOp))
 43567  				}
 43568  				string_concat(tls, bp+88, zNew, 1, bp+96)
 43569  				zSep = ts + 9419
 43570  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 43571  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 43572  			}
 43573  		}
 43574  	}
 43575  
 43576  	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) {
 43577  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 43578  		var zNewCol uintptr
 43579  		if iCol >= 0 {
 43580  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 43581  		} else {
 43582  			zNewCol = ts + 6427
 43583  		}
 43584  		var zDir uintptr
 43585  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 43586  			zDir = ts + 27644
 43587  		} else {
 43588  			zDir = ts + 27649
 43589  		}
 43590  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27653, libc.VaList(bp+64, zNewCol, zDir))
 43591  		string_concat(tls, bp+88, zNew, 1, bp+96)
 43592  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 43593  	}
 43594  
 43595  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27495)
 43596  
 43597  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43598  
 43599  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43600  		return *(*int32)(unsafe.Pointer(bp + 96))
 43601  	}
 43602  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43603  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 88))
 43604  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 43605  	if useCost != 0 {
 43606  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 43607  	} else if useIdx != 0 {
 43608  		for ii = 0; uint64(ii) < uint64(unsafe.Sizeof(int32(0)))*uint64(8)-uint64(1); ii++ {
 43609  			if nRow&(int32(1)<<ii) != 0 {
 43610  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 43611  			}
 43612  		}
 43613  	} else {
 43614  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 43615  	}
 43616  	return *(*int32)(unsafe.Pointer(bp + 96))
 43617  }
 43618  
 43619  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 43620  	bp := tls.Alloc(136)
 43621  	defer tls.Free(136)
 43622  
 43623  	var pVtab uintptr = tab
 43624  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43625  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 43626  
 43627  	*(*uintptr)(unsafe.Pointer(bp + 128)) = uintptr(0)
 43628  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 43629  	var bindArgZero int32 = 0
 43630  	var bindArgOne int32 = 0
 43631  	var i int32
 43632  
 43633  	if simulateVtabError(tls, pVtab, ts+27669) != 0 {
 43634  		return SQLITE_ERROR
 43635  	}
 43636  
 43637  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43638  		var zSep uintptr = ts + 27677
 43639  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27682, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43640  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43641  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43642  		}
 43643  
 43644  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*8)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER)
 43645  		bindArgZero = 1
 43646  
 43647  		if bindArgOne != 0 {
 43648  			string_concat(tls, bp+96, ts+27692, 0, bp+104)
 43649  			zSep = ts + 4758
 43650  		}
 43651  		for i = 2; i < nData; i++ {
 43652  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) == uintptr(0) {
 43653  				continue
 43654  			}
 43655  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 43656  				ts+27707, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*8)), i)), 1, bp+104)
 43657  			zSep = ts + 4758
 43658  		}
 43659  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27717, libc.VaList(bp+32, nData)), 1, bp+104)
 43660  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43661  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27734, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43662  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43663  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43664  		}
 43665  		bindArgZero = 1
 43666  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 43667  		var ii int32
 43668  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 43669  		*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
 43670  
 43671  		*(*uintptr)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_mprintf(tls, ts+27766, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43672  		if !(*(*uintptr)(unsafe.Pointer(bp + 112)) != 0) {
 43673  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43674  		}
 43675  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER {
 43676  			bindArgOne = 1
 43677  			*(*uintptr)(unsafe.Pointer(bp + 120)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 43678  			string_concat(tls, bp+112, ts+6427, 0, bp+104)
 43679  		}
 43680  
 43681  		for ii = 2; ii < nData; ii++ {
 43682  			string_concat(tls, bp+112,
 43683  				sqlite3.Xsqlite3_mprintf(tls, ts+27783, libc.VaList(bp+56, func() uintptr {
 43684  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 43685  						return ts + 97
 43686  					}
 43687  					return ts + 584
 43688  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*8)))), 1, bp+104)
 43689  			string_concat(tls, bp+120,
 43690  				sqlite3.Xsqlite3_mprintf(tls, ts+27788, libc.VaList(bp+72, func() uintptr {
 43691  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 43692  						return ts + 97
 43693  					}
 43694  					return ts + 584
 43695  				}(), ii)), 1, bp+104)
 43696  		}
 43697  
 43698  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, bp+104)
 43699  		string_concat(tls, bp+96, ts+27794, 0, bp+104)
 43700  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 120)), 1, bp+104)
 43701  		string_concat(tls, bp+96, ts+585, 0, bp+104)
 43702  	} else {
 43703  		return SQLITE_ERROR
 43704  	}
 43705  
 43706  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43707  		*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+128, uintptr(0))
 43708  	}
 43709  
 43710  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 43711  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43712  		if bindArgZero != 0 {
 43713  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 43714  		}
 43715  		if bindArgOne != 0 {
 43716  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*8)))
 43717  		}
 43718  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK; i++ {
 43719  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) != 0 {
 43720  				*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)))
 43721  			}
 43722  		}
 43723  		if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43724  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 43725  			*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 43726  		} else {
 43727  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 43728  		}
 43729  	}
 43730  
 43731  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43732  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 43733  	}
 43734  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 43735  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 43736  	}
 43737  
 43738  	return *(*int32)(unsafe.Pointer(bp + 104))
 43739  }
 43740  
 43741  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 43742  	bp := tls.Alloc(8)
 43743  	defer tls.Free(8)
 43744  
 43745  	var z uintptr
 43746  	var pVtab uintptr = tab
 43747  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27804, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43748  	if z == uintptr(0) {
 43749  		return SQLITE_NOMEM
 43750  	}
 43751  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 43752  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 43753  	sqlite3.Xsqlite3_free(tls, z)
 43754  	return SQLITE_OK
 43755  }
 43756  
 43757  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 43758  	var rc int32
 43759  	var pVtab uintptr = tab
 43760  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43761  	var zVal uintptr
 43762  
 43763  	if simulateVtabError(tls, pVtab, ts+27813) != 0 {
 43764  		return SQLITE_ERROR
 43765  	}
 43766  
 43767  	rc = echoTransactionCall(tls, tab, ts+27813)
 43768  
 43769  	if rc == SQLITE_OK {
 43770  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27820, uintptr(0), TCL_GLOBAL_ONLY)
 43771  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 43772  			rc = SQLITE_ERROR
 43773  		}
 43774  	}
 43775  	if rc == SQLITE_OK {
 43776  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 43777  	}
 43778  	return rc
 43779  }
 43780  
 43781  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 43782  	var rc int32
 43783  	var pVtab uintptr = tab
 43784  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43785  	var zVal uintptr
 43786  
 43787  	if simulateVtabError(tls, pVtab, ts+27843) != 0 {
 43788  		return SQLITE_ERROR
 43789  	}
 43790  
 43791  	rc = echoTransactionCall(tls, tab, ts+27843)
 43792  
 43793  	if rc == SQLITE_OK {
 43794  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27849, uintptr(0), TCL_GLOBAL_ONLY)
 43795  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 43796  			rc = -1
 43797  		}
 43798  	}
 43799  	return rc
 43800  }
 43801  
 43802  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 43803  	var pVtab uintptr = tab
 43804  	var rc int32
 43805  
 43806  	if simulateVtabError(tls, pVtab, ts+27871) != 0 {
 43807  		return SQLITE_ERROR
 43808  	}
 43809  
 43810  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 43811  	rc = echoTransactionCall(tls, tab, ts+27871)
 43812  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 43813  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43814  	return rc
 43815  }
 43816  
 43817  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 43818  	var rc int32
 43819  	var pVtab uintptr = tab
 43820  
 43821  	rc = echoTransactionCall(tls, tab, ts+27879)
 43822  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43823  	return rc
 43824  }
 43825  
 43826  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 43827  	bp := tls.Alloc(216)
 43828  	defer tls.Free(216)
 43829  
 43830  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 43831  
 43832  	var i int32
 43833  	var rc int32
 43834  	tcl.XTcl_DStringInit(tls, bp)
 43835  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27889)
 43836  	for i = 0; i < nArg; i++ {
 43837  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))))
 43838  	}
 43839  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 43840  	tcl.XTcl_DStringFree(tls, bp)
 43841  	if rc != 0 {
 43842  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 43843  	} else {
 43844  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 43845  			-1, libc.UintptrFromInt32(-1))
 43846  	}
 43847  	tcl.XTcl_ResetResult(tls, interp)
 43848  }
 43849  
 43850  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 43851  	bp := tls.Alloc(64)
 43852  	defer tls.Free(64)
 43853  
 43854  	var pVtab uintptr = vtab
 43855  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43856  
 43857  	if libc.Xstrcmp(tls, zFuncName, ts+27592) != 0 {
 43858  		return 0
 43859  	}
 43860  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27889, bp) == 0 {
 43861  		return 0
 43862  	}
 43863  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 43864  		f func(*libc.TLS, uintptr, int32, uintptr)
 43865  	}{overloadedGlobFunction}))
 43866  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 43867  	return 1
 43868  }
 43869  
 43870  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 43871  	bp := tls.Alloc(24)
 43872  	defer tls.Free(24)
 43873  
 43874  	var rc int32 = SQLITE_OK
 43875  	var p uintptr = vtab
 43876  
 43877  	if simulateVtabError(tls, p, ts+27910) != 0 {
 43878  		return SQLITE_ERROR
 43879  	}
 43880  
 43881  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 43882  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 43883  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27918,
 43884  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 43885  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43886  		sqlite3.Xsqlite3_free(tls, zSql)
 43887  	}
 43888  
 43889  	return rc
 43890  }
 43891  
 43892  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43893  	return SQLITE_OK
 43894  }
 43895  
 43896  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43897  	return SQLITE_OK
 43898  }
 43899  
 43900  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43901  	return SQLITE_OK
 43902  }
 43903  
 43904  var echoModule = sqlite3_module{
 43905  	FiVersion:      1,
 43906  	FxCreate:       0,
 43907  	FxConnect:      0,
 43908  	FxBestIndex:    0,
 43909  	FxDisconnect:   0,
 43910  	FxDestroy:      0,
 43911  	FxOpen:         0,
 43912  	FxClose:        0,
 43913  	FxFilter:       0,
 43914  	FxNext:         0,
 43915  	FxEof:          0,
 43916  	FxColumn:       0,
 43917  	FxRowid:        0,
 43918  	FxUpdate:       0,
 43919  	FxBegin:        0,
 43920  	FxSync:         0,
 43921  	FxCommit:       0,
 43922  	FxRollback:     0,
 43923  	FxFindFunction: 0,
 43924  	FxRename:       0,
 43925  }
 43926  
 43927  var echoModuleV2 = sqlite3_module{
 43928  	FiVersion:      2,
 43929  	FxCreate:       0,
 43930  	FxConnect:      0,
 43931  	FxBestIndex:    0,
 43932  	FxDisconnect:   0,
 43933  	FxDestroy:      0,
 43934  	FxOpen:         0,
 43935  	FxClose:        0,
 43936  	FxFilter:       0,
 43937  	FxNext:         0,
 43938  	FxEof:          0,
 43939  	FxColumn:       0,
 43940  	FxRowid:        0,
 43941  	FxUpdate:       0,
 43942  	FxBegin:        0,
 43943  	FxSync:         0,
 43944  	FxCommit:       0,
 43945  	FxRollback:     0,
 43946  	FxFindFunction: 0,
 43947  	FxRename:       0,
 43948  	FxSavepoint:    0,
 43949  	FxRelease:      0,
 43950  	FxRollbackTo:   0,
 43951  }
 43952  
 43953  func moduleDestroy(tls *libc.TLS, p uintptr) {
 43954  	var pMod uintptr = p
 43955  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+27948,
 43956  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 43957  	sqlite3.Xsqlite3_free(tls, p)
 43958  }
 43959  
 43960  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43961  	bp := tls.Alloc(8)
 43962  	defer tls.Free(8)
 43963  
 43964  	var rc int32
 43965  
 43966  	var pMod uintptr
 43967  	if objc != 2 {
 43968  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 43969  		return TCL_ERROR
 43970  	}
 43971  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43972  		return TCL_ERROR
 43973  	}
 43974  
 43975  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43976  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43977  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43978  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 43979  		*(*uintptr)(unsafe.Pointer(bp)), ts+27986, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43980  
 43981  	if rc == SQLITE_OK {
 43982  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43983  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43984  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43985  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+27991,
 43986  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43987  	}
 43988  
 43989  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43990  	return TCL_OK
 43991  }
 43992  
 43993  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43994  	bp := tls.Alloc(8)
 43995  	defer tls.Free(8)
 43996  
 43997  	var rc int32
 43998  	if objc != 3 {
 43999  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 44000  		return TCL_ERROR
 44001  	}
 44002  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44003  		return TCL_ERROR
 44004  	}
 44005  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 44006  	if rc != SQLITE_OK {
 44007  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 44008  		return TCL_ERROR
 44009  	}
 44010  	return TCL_OK
 44011  }
 44012  
 44013  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 44014  	var i int32
 44015  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd2))/uint64(unsafe.Sizeof(struct {
 44016  		FzName      uintptr
 44017  		FxProc      uintptr
 44018  		FclientData uintptr
 44019  	}{})); i++ {
 44020  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 44021  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 44022  	}
 44023  	return TCL_OK
 44024  }
 44025  
 44026  var aObjCmd2 = [2]struct {
 44027  	FzName      uintptr
 44028  	FxProc      uintptr
 44029  	FclientData uintptr
 44030  }{
 44031  	{FzName: ts + 27999, FxProc: 0},
 44032  	{FzName: ts + 28020, FxProc: 0},
 44033  }
 44034  
 44035  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44036  	bp := tls.Alloc(32)
 44037  	defer tls.Free(32)
 44038  
 44039  	var zErrFunction uintptr
 44040  
 44041  	var rc int32
 44042  	zErrFunction = ts + 28041
 44043  	if !(objc != 1) {
 44044  		goto __1
 44045  	}
 44046  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44047  	return TCL_ERROR
 44048  __1:
 44049  	;
 44050  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 44051  	if !(rc != SQLITE_OK) {
 44052  		goto __2
 44053  	}
 44054  	zErrFunction = ts + 21460
 44055  	goto error_out
 44056  __2:
 44057  	;
 44058  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 44059  	if !(rc != SQLITE_MISUSE) {
 44060  		goto __3
 44061  	}
 44062  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44063  	zErrFunction = ts + 28045
 44064  	goto error_out
 44065  __3:
 44066  	;
 44067  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44068  	return TCL_OK
 44069  
 44070  error_out:
 44071  	tcl.XTcl_ResetResult(tls, interp)
 44072  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 44073  	return TCL_ERROR
 44074  }
 44075  
 44076  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44077  	bp := tls.Alloc(24)
 44078  	defer tls.Free(24)
 44079  
 44080  	var p uintptr
 44081  	var zErrFunction uintptr
 44082  	zErrFunction = ts + 28041
 44083  
 44084  	if !(objc != 1) {
 44085  		goto __1
 44086  	}
 44087  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44088  	return TCL_ERROR
 44089  __1:
 44090  	;
 44091  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 44092  	if !!(p != 0) {
 44093  		goto __2
 44094  	}
 44095  	zErrFunction = ts + 28095
 44096  	goto error_out
 44097  __2:
 44098  	;
 44099  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 44100  	if !(p != 0) {
 44101  		goto __3
 44102  	}
 44103  	zErrFunction = ts + 28110
 44104  	goto error_out
 44105  __3:
 44106  	;
 44107  	return TCL_OK
 44108  
 44109  error_out:
 44110  	tcl.XTcl_ResetResult(tls, interp)
 44111  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 44112  	return TCL_ERROR
 44113  }
 44114  
 44115  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44116  	bp := tls.Alloc(40)
 44117  	defer tls.Free(40)
 44118  
 44119  	var zErrFunction uintptr
 44120  
 44121  	var rc int32
 44122  	zErrFunction = ts + 28041
 44123  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 44124  
 44125  	if !(objc != 1) {
 44126  		goto __1
 44127  	}
 44128  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 44129  	return TCL_ERROR
 44130  __1:
 44131  	;
 44132  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 44133  	if !(rc != SQLITE_OK) {
 44134  		goto __2
 44135  	}
 44136  	zErrFunction = ts + 21460
 44137  	goto error_out
 44138  __2:
 44139  	;
 44140  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44141  
 44142  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 44143  	if !(rc != SQLITE_MISUSE) {
 44144  		goto __3
 44145  	}
 44146  	zErrFunction = ts + 21366
 44147  	goto error_out
 44148  __3:
 44149  	;
 44150  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44151  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44152  	if !(rc != SQLITE_MISUSE) {
 44153  		goto __4
 44154  	}
 44155  	zErrFunction = ts + 21541
 44156  	goto error_out
 44157  __4:
 44158  	;
 44159  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44160  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44161  	if !(rc != SQLITE_MISUSE) {
 44162  		goto __5
 44163  	}
 44164  	zErrFunction = ts + 21575
 44165  	goto error_out
 44166  __5:
 44167  	;
 44168  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44169  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44170  	if !(rc != SQLITE_MISUSE) {
 44171  		goto __6
 44172  	}
 44173  	zErrFunction = ts + 21557
 44174  	goto error_out
 44175  __6:
 44176  	;
 44177  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 44178  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 44179  	if !(rc != SQLITE_MISUSE) {
 44180  		goto __7
 44181  	}
 44182  	zErrFunction = ts + 21637
 44183  	goto error_out
 44184  __7:
 44185  	;
 44186  	return TCL_OK
 44187  
 44188  error_out:
 44189  	tcl.XTcl_ResetResult(tls, interp)
 44190  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 44191  	return TCL_ERROR
 44192  }
 44193  
 44194  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 44195  	var i int32
 44196  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd3))/uint64(unsafe.Sizeof(struct {
 44197  		FzName      uintptr
 44198  		FxProc      uintptr
 44199  		FclientData uintptr
 44200  	}{})); i++ {
 44201  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 44202  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 44203  	}
 44204  	return TCL_OK
 44205  }
 44206  
 44207  var aObjCmd3 = [3]struct {
 44208  	FzName      uintptr
 44209  	FxProc      uintptr
 44210  	FclientData uintptr
 44211  }{
 44212  	{FzName: ts + 28126, FxProc: 0},
 44213  	{FzName: ts + 28140, FxProc: 0},
 44214  	{FzName: ts + 28155, FxProc: 0},
 44215  }
 44216  
 44217  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 44218  	return TCL_OK
 44219  }
 44220  
 44221  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44222  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 44223  	return SQLITE_OK
 44224  }
 44225  
 44226  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 44227  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28172,
 44228  		*(*uintptr)(unsafe.Pointer(&struct {
 44229  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44230  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 44231  	return TCL_OK
 44232  }
 44233  
 44234  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44235  	bp := tls.Alloc(196)
 44236  	defer tls.Free(196)
 44237  
 44238  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 44239  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28201},
 44240  		{FzCmd: ts + 28207, FeCmd: uint32(1), FzArg: ts + 584},
 44241  		{FzCmd: ts + 28214, FeCmd: uint32(2), FzArg: ts + 584},
 44242  		{FzCmd: ts + 28224, FeCmd: uint32(3), FzArg: ts + 584},
 44243  		{},
 44244  	}
 44245  
 44246  	var p uintptr = clientData
 44247  
 44248  	var rc int32
 44249  
 44250  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 44251  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+120)
 44252  	if rc != TCL_OK {
 44253  		return rc
 44254  	}
 44255  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FnArg {
 44256  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FzArg)
 44257  		return TCL_ERROR
 44258  	}
 44259  
 44260  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FeCmd {
 44261  	case uint32(1):
 44262  		{
 44263  			var zCmdName uintptr
 44264  
 44265  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 44266  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+128)
 44267  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 128)).FdeleteProc = uintptr(0)
 44268  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+128)
 44269  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 44270  
 44271  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 44272  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44273  			break
 44274  
 44275  		}
 44276  
 44277  	case uint32(0):
 44278  		{
 44279  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+192) {
 44280  				return TCL_ERROR
 44281  			}
 44282  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 192)))
 44283  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44284  			break
 44285  
 44286  		}
 44287  
 44288  	case uint32(2):
 44289  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 44290  		break
 44291  
 44292  	case uint32(3):
 44293  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 44294  		break
 44295  	}
 44296  
 44297  	return TCL_OK
 44298  }
 44299  
 44300  type BackupSubCommand = struct {
 44301  	FzCmd uintptr
 44302  	FeCmd uint32
 44303  	FnArg int32
 44304  	FzArg uintptr
 44305  }
 44306  
 44307  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 44308  	var pBackup uintptr = clientData
 44309  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 44310  }
 44311  
 44312  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44313  	bp := tls.Alloc(32)
 44314  	defer tls.Free(32)
 44315  
 44316  	var pBackup uintptr
 44317  
 44318  	var zDestName uintptr
 44319  	var zSrcName uintptr
 44320  	var zCmd uintptr
 44321  
 44322  	if objc != 6 {
 44323  		tcl.XTcl_WrongNumArgs(tls,
 44324  			interp, 1, objv, ts+28234)
 44325  		return TCL_ERROR
 44326  	}
 44327  
 44328  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44329  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+16)
 44330  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44331  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8))), bp+24)
 44332  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 44333  
 44334  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 24)), zSrcName)
 44335  	if !(pBackup != 0) {
 44336  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28280, 0))
 44337  		return TCL_ERROR
 44338  	}
 44339  
 44340  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 44341  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44342  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 44343  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44344  	return TCL_OK
 44345  }
 44346  
 44347  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 44348  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28309, *(*uintptr)(unsafe.Pointer(&struct {
 44349  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44350  	}{backupTestInit})), uintptr(0), uintptr(0))
 44351  	return TCL_OK
 44352  }
 44353  
 44354  type tcl_vtab1 = struct {
 44355  	Fbase   sqlite3_vtab
 44356  	Finterp uintptr
 44357  	FpCmd   uintptr
 44358  	Fdb     uintptr
 44359  }
 44360  
 44361  type tcl_vtab = tcl_vtab1
 44362  type tcl_cursor1 = struct {
 44363  	Fbase  sqlite3_vtab_cursor
 44364  	FpStmt uintptr
 44365  }
 44366  
 44367  type tcl_cursor = tcl_cursor1
 44368  
 44369  func tclDequote(tls *libc.TLS, z uintptr) {
 44370  	var q uint8 = *(*uint8)(unsafe.Pointer(z))
 44371  
 44372  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 44373  		var iIn int32 = 1
 44374  		var iOut int32 = 0
 44375  		if int32(q) == '[' {
 44376  			q = uint8(']')
 44377  		}
 44378  
 44379  		for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 44380  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 44381  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 44382  					iIn++
 44383  					break
 44384  				} else {
 44385  					iIn = iIn + 2
 44386  					*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 44387  				}
 44388  			} else {
 44389  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 44390  			}
 44391  		}
 44392  
 44393  		*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
 44394  	}
 44395  }
 44396  
 44397  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 44398  	bp := tls.Alloc(8)
 44399  	defer tls.Free(8)
 44400  
 44401  	var interp uintptr = pAux
 44402  	var pTab uintptr = uintptr(0)
 44403  	var zCmd uintptr = uintptr(0)
 44404  	var pScript uintptr = uintptr(0)
 44405  	var rc int32 = SQLITE_OK
 44406  
 44407  	if argc != 4 {
 44408  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 44409  		return SQLITE_ERROR
 44410  	}
 44411  
 44412  	zCmd = sqlite3.Xsqlite3_malloc64(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 44413  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 44414  	if zCmd != 0 && pTab != 0 {
 44415  		libc.Xmemcpy(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*8)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 44416  		tclDequote(tls, zCmd)
 44417  		libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(tcl_vtab{})))
 44418  
 44419  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 44420  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 44421  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 44422  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 44423  
 44424  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44425  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44426  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27377, -1))
 44427  
 44428  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44429  		if rc != TCL_OK {
 44430  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 44431  			rc = SQLITE_ERROR
 44432  		} else {
 44433  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 44434  		}
 44435  
 44436  		if rc != SQLITE_OK {
 44437  			sqlite3.Xsqlite3_free(tls, pTab)
 44438  			pTab = uintptr(0)
 44439  		}
 44440  	} else {
 44441  		rc = SQLITE_NOMEM
 44442  	}
 44443  
 44444  	sqlite3.Xsqlite3_free(tls, zCmd)
 44445  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 44446  	return rc
 44447  }
 44448  
 44449  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 44450  	var pTab uintptr = pVtab
 44451  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44452  		var _objPtr uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd
 44453  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44454  			tcl.XTclFreeObj(tls, _objPtr)
 44455  		}
 44456  	}
 44457  	sqlite3.Xsqlite3_free(tls, pTab)
 44458  	return SQLITE_OK
 44459  }
 44460  
 44461  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 44462  	var pCur uintptr
 44463  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 44464  	if pCur == uintptr(0) {
 44465  		return SQLITE_NOMEM
 44466  	}
 44467  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(tcl_cursor{})))
 44468  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 44469  	return SQLITE_OK
 44470  }
 44471  
 44472  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 44473  	var pCur uintptr = cur
 44474  	if pCur != 0 {
 44475  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 44476  		sqlite3.Xsqlite3_free(tls, pCur)
 44477  	}
 44478  	return SQLITE_OK
 44479  }
 44480  
 44481  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44482  	bp := tls.Alloc(8)
 44483  	defer tls.Free(8)
 44484  
 44485  	var pCsr uintptr = pVtabCursor
 44486  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 44487  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44488  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44489  		if rc != SQLITE_ROW {
 44490  			var zErr uintptr
 44491  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44492  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 44493  			if rc != SQLITE_OK {
 44494  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44495  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44496  			}
 44497  		}
 44498  	}
 44499  	return SQLITE_OK
 44500  }
 44501  
 44502  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 44503  	bp := tls.Alloc(56)
 44504  	defer tls.Free(56)
 44505  
 44506  	var pCsr uintptr = pVtabCursor
 44507  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44508  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44509  	var pScript uintptr
 44510  	var pArg uintptr
 44511  	var ii int32
 44512  	var rc int32
 44513  
 44514  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44515  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44516  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27441, -1))
 44517  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 44518  	if idxStr != 0 {
 44519  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 44520  	} else {
 44521  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 44522  	}
 44523  
 44524  	pArg = tcl.XTcl_NewObj(tls)
 44525  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 44526  	for ii = 0; ii < argc; ii++ {
 44527  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)))
 44528  		var pVal uintptr
 44529  		if zVal == uintptr(0) {
 44530  			pVal = tcl.XTcl_NewObj(tls)
 44531  			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) {
 44532  				var pVal2 uintptr = uintptr(0)
 44533  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 44534  				if zVal != 0 {
 44535  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44536  				} else {
 44537  					pVal2 = tcl.XTcl_NewObj(tls)
 44538  				}
 44539  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 44540  			}
 44541  		} else {
 44542  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44543  		}
 44544  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 44545  	}
 44546  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 44547  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44548  		var _objPtr uintptr = pArg
 44549  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44550  			tcl.XTclFreeObj(tls, _objPtr)
 44551  		}
 44552  	}
 44553  
 44554  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44555  	if rc != TCL_OK {
 44556  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44557  		rc = SQLITE_ERROR
 44558  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44559  	} else {
 44560  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44561  		*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 44562  
 44563  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+40, bp+48)
 44564  		if rc != TCL_OK {
 44565  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44566  			rc = SQLITE_ERROR
 44567  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44568  		} else {
 44569  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 40)); ii = ii + 2 {
 44570  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii)*8)))
 44571  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii+1)*8))
 44572  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 44573  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 44574  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 44575  					if rc != SQLITE_OK {
 44576  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44577  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+16, zErr))
 44578  					}
 44579  				} else {
 44580  					rc = SQLITE_ERROR
 44581  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+24, zCmd))
 44582  				}
 44583  			}
 44584  		}
 44585  	}
 44586  
 44587  	if rc == SQLITE_OK {
 44588  		rc = tclNext(tls, pVtabCursor)
 44589  	}
 44590  	return rc
 44591  }
 44592  
 44593  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 44594  	var pCsr uintptr = pVtabCursor
 44595  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 44596  	return SQLITE_OK
 44597  }
 44598  
 44599  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 44600  	var pCsr uintptr = pVtabCursor
 44601  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 44602  	return SQLITE_OK
 44603  }
 44604  
 44605  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44606  	var pCsr uintptr = pVtabCursor
 44607  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 44608  }
 44609  
 44610  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44611  	var ii int32
 44612  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44613  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44614  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 44615  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 44616  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44617  		var zOp uintptr = ts + 3405
 44618  
 44619  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44620  
 44621  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 44622  		case SQLITE_INDEX_CONSTRAINT_EQ:
 44623  			zOp = ts + 28365
 44624  			break
 44625  		case SQLITE_INDEX_CONSTRAINT_GT:
 44626  			zOp = ts + 28368
 44627  			break
 44628  		case SQLITE_INDEX_CONSTRAINT_LE:
 44629  			zOp = ts + 28371
 44630  			break
 44631  		case SQLITE_INDEX_CONSTRAINT_LT:
 44632  			zOp = ts + 28374
 44633  			break
 44634  		case SQLITE_INDEX_CONSTRAINT_GE:
 44635  			zOp = ts + 28377
 44636  			break
 44637  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 44638  			zOp = ts + 28380
 44639  			break
 44640  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 44641  			zOp = ts + 27587
 44642  			break
 44643  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 44644  			zOp = ts + 27592
 44645  			break
 44646  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 44647  			zOp = ts + 6831
 44648  			break
 44649  		case SQLITE_INDEX_CONSTRAINT_NE:
 44650  			zOp = ts + 28386
 44651  			break
 44652  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 44653  			zOp = ts + 28389
 44654  			break
 44655  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 44656  			zOp = ts + 28395
 44657  			break
 44658  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 44659  			zOp = ts + 28405
 44660  			break
 44661  		case SQLITE_INDEX_CONSTRAINT_IS:
 44662  			zOp = ts + 5851
 44663  			break
 44664  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 44665  			zOp = ts + 28412
 44666  			break
 44667  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 44668  			zOp = ts + 28418
 44669  			break
 44670  		}
 44671  
 44672  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 44673  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 44674  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44675  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 44676  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28432, -1))
 44677  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 44678  
 44679  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44680  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44681  			var _objPtr uintptr = pElem
 44682  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44683  				tcl.XTclFreeObj(tls, _objPtr)
 44684  			}
 44685  		}
 44686  	}
 44687  
 44688  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 44689  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 44690  		var _objPtr uintptr = pRes
 44691  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44692  			tcl.XTclFreeObj(tls, _objPtr)
 44693  		}
 44694  	}
 44695  }
 44696  
 44697  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44698  	var ii int32
 44699  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44700  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44701  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 44702  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 44703  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44704  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44705  
 44706  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44707  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 44708  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28439, -1))
 44709  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 44710  
 44711  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44712  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44713  			var _objPtr uintptr = pElem
 44714  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44715  				tcl.XTclFreeObj(tls, _objPtr)
 44716  			}
 44717  		}
 44718  	}
 44719  
 44720  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 44721  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 44722  		var _objPtr uintptr = pRes
 44723  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44724  			tcl.XTclFreeObj(tls, _objPtr)
 44725  		}
 44726  	}
 44727  }
 44728  
 44729  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44730  	bp := tls.Alloc(80)
 44731  	defer tls.Free(80)
 44732  
 44733  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 44734  		ts + 28444,
 44735  		ts + 28456,
 44736  		ts + 28464,
 44737  		ts + 28469,
 44738  		ts + 28478,
 44739  		ts + 28481,
 44740  		uintptr(0),
 44741  	}
 44742  
 44743  	var pIdxInfo uintptr = clientData
 44744  
 44745  	if objc < 2 {
 44746  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 44747  		return TCL_ERROR
 44748  	}
 44749  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+56) != 0 {
 44750  		return TCL_ERROR
 44751  	}
 44752  
 44753  	if *(*int32)(unsafe.Pointer(bp + 56)) < 4 && objc != 2 {
 44754  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 44755  		return TCL_ERROR
 44756  	}
 44757  	if *(*int32)(unsafe.Pointer(bp + 56)) == 4 && objc != 4 {
 44758  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28491)
 44759  		return TCL_ERROR
 44760  	}
 44761  	if *(*int32)(unsafe.Pointer(bp + 56)) == 5 && objc != 3 && objc != 4 {
 44762  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28505)
 44763  		return TCL_ERROR
 44764  	}
 44765  
 44766  	switch *(*int32)(unsafe.Pointer(bp + 56)) {
 44767  	case 0:
 44768  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 44769  		break
 44770  
 44771  	case 1:
 44772  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 44773  		break
 44774  
 44775  	case 2:
 44776  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 44777  		break
 44778  
 44779  	case 3:
 44780  		{
 44781  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 44782  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 44783  			break
 44784  
 44785  		}
 44786  
 44787  	case 4:
 44788  		{
 44789  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+60) != 0 ||
 44790  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 44791  				return TCL_ERROR
 44792  			}
 44793  			tcl.XTcl_SetObjResult(tls, interp,
 44794  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 60)), *(*int32)(unsafe.Pointer(bp + 64)))))
 44795  			break
 44796  
 44797  		}
 44798  
 44799  	case 5:
 44800  		{
 44801  			*(*int32)(unsafe.Pointer(bp + 68)) = 0
 44802  			var rc int32
 44803  			*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 44804  			var zVal uintptr = ts + 584
 44805  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+68) != 0 {
 44806  				return TCL_ERROR
 44807  			}
 44808  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 44809  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 44810  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44811  				return TCL_ERROR
 44812  			}
 44813  			if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 44814  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 44815  			} else if objc == 4 {
 44816  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44817  			}
 44818  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 44819  			break
 44820  
 44821  		}
 44822  	}
 44823  
 44824  	return TCL_OK
 44825  }
 44826  
 44827  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 44828  	bp := tls.Alloc(108)
 44829  	defer tls.Free(108)
 44830  
 44831  	var pTab uintptr = tab
 44832  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44833  	var rc int32 = SQLITE_OK
 44834  
 44835  	var pScript uintptr
 44836  
 44837  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44838  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44839  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27495, -1))
 44840  
 44841  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]uint8{})), bp+56, ts+28521, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 44842  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 44843  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44844  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 44845  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 44846  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44847  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 44848  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44849  		var _objPtr uintptr = pScript
 44850  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44851  			tcl.XTclFreeObj(tls, _objPtr)
 44852  		}
 44853  	}
 44854  
 44855  	if rc != TCL_OK {
 44856  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44857  		rc = SQLITE_ERROR
 44858  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44859  	} else {
 44860  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44861  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 44862  
 44863  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88)
 44864  		if rc != TCL_OK {
 44865  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44866  			rc = SQLITE_ERROR
 44867  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 44868  		} else {
 44869  			var ii int32
 44870  			var iArgv int32 = 1
 44871  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 44872  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii)*8)))
 44873  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii+1)*8))
 44874  				if sqlite3.Xsqlite3_stricmp(tls, ts+28533, zCmd) == 0 {
 44875  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+64)
 44876  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28456, zCmd) == 0 {
 44877  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+60)
 44878  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28538, zCmd) == 0 {
 44879  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+40)
 44880  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28545, zCmd) == 0 {
 44881  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 44882  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 44883  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 44884  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28552, zCmd) == 0 {
 44885  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 96)) = int64(0)
 44886  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+96)
 44887  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 96))))
 44888  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28557, zCmd) == 0 ||
 44889  					sqlite3.Xsqlite3_stricmp(tls, ts+28561, zCmd) == 0 {
 44890  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+104)
 44891  					if rc == SQLITE_OK {
 44892  						if *(*int32)(unsafe.Pointer(bp + 104)) < 0 || *(*int32)(unsafe.Pointer(bp + 104)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 44893  							rc = SQLITE_ERROR
 44894  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28566, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 104))))
 44895  						} else {
 44896  							var bOmit int32 = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*uint8)(unsafe.Pointer(zCmd))) == 'O')
 44897  							(*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)
 44898  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fomit = uint8(bOmit)
 44899  						}
 44900  					}
 44901  				} else {
 44902  					rc = SQLITE_ERROR
 44903  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+40, zCmd))
 44904  				}
 44905  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 44906  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44907  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 44908  				}
 44909  			}
 44910  		}
 44911  	}
 44912  
 44913  	return rc
 44914  }
 44915  
 44916  var iNext int32 = 43
 44917  
 44918  var tclModule = sqlite3_module{
 44919  	FxCreate:     0,
 44920  	FxConnect:    0,
 44921  	FxBestIndex:  0,
 44922  	FxDisconnect: 0,
 44923  	FxDestroy:    0,
 44924  	FxOpen:       0,
 44925  	FxClose:      0,
 44926  	FxFilter:     0,
 44927  	FxNext:       0,
 44928  	FxEof:        0,
 44929  	FxColumn:     0,
 44930  	FxRowid:      0,
 44931  }
 44932  
 44933  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44934  	bp := tls.Alloc(8)
 44935  	defer tls.Free(8)
 44936  
 44937  	if objc != 2 {
 44938  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 44939  		return TCL_ERROR
 44940  	}
 44941  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44942  		return TCL_ERROR
 44943  	}
 44944  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28581, uintptr(unsafe.Pointer(&tclModule)), interp)
 44945  	return TCL_OK
 44946  }
 44947  
 44948  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 44949  	var i int32
 44950  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd4))/uint64(unsafe.Sizeof(struct {
 44951  		FzName      uintptr
 44952  		FxProc      uintptr
 44953  		FclientData uintptr
 44954  	}{})); i++ {
 44955  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 44956  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 44957  	}
 44958  	return TCL_OK
 44959  }
 44960  
 44961  var aObjCmd4 = [1]struct {
 44962  	FzName      uintptr
 44963  	FxProc      uintptr
 44964  	FclientData uintptr
 44965  }{
 44966  	{FzName: ts + 28585, FxProc: 0},
 44967  }
 44968  
 44969  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 44970  	bp := tls.Alloc(8)
 44971  	defer tls.Free(8)
 44972  
 44973  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof(buf))-uint64(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 44974  	return uintptr(unsafe.Pointer(&buf))
 44975  }
 44976  
 44977  var buf [100]uint8
 44978  
 44979  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 44980  	bp := tls.Alloc(8)
 44981  	defer tls.Free(8)
 44982  
 44983  	var z uintptr
 44984  
 44985  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44986  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 44987  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 44988  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28605, z, uint64(9)) {
 44989  		var channel Tcl_Channel
 44990  		var instanceData ClientData
 44991  
 44992  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 44993  		if !(channel != 0) {
 44994  			return TCL_ERROR
 44995  		}
 44996  
 44997  		tcl.XTcl_Flush(tls, channel)
 44998  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 44999  
 45000  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 45001  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 45002  	} else {
 45003  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 45004  	}
 45005  
 45006  	return TCL_OK
 45007  }
 45008  
 45009  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 45010  	bp := tls.Alloc(4)
 45011  	defer tls.Free(4)
 45012  
 45013  	var z uintptr
 45014  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 45015  	return func() uintptr {
 45016  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 45017  			return z
 45018  		}
 45019  		return uintptr(0)
 45020  	}()
 45021  }
 45022  
 45023  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45024  	bp := tls.Alloc(40)
 45025  	defer tls.Free(40)
 45026  
 45027  	var zDb uintptr
 45028  	var zTable uintptr
 45029  	var zColumn uintptr
 45030  
 45031  	var zVarname uintptr
 45032  
 45033  	*(*uintptr)(unsafe.Pointer(bp + 32)) = bp
 45034  	var rc int32
 45035  
 45036  	if objc != 8 {
 45037  		var zUsage uintptr = ts + 28615
 45038  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 45039  		return TCL_ERROR
 45040  	}
 45041  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 45042  		return TCL_ERROR
 45043  	}
 45044  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 45045  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 45046  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 45047  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+16) != 0 {
 45048  		return TCL_ERROR
 45049  	}
 45050  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp) != 0 {
 45051  		return TCL_ERROR
 45052  	}
 45053  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*8)), bp+24)
 45054  
 45055  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 45056  		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)
 45057  		tcl.XTcl_SetVar2(tls, interp, zVarname, uintptr(0), ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0)
 45058  	} else {
 45059  		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))
 45060  	}
 45061  
 45062  	if rc == SQLITE_OK {
 45063  		tcl.XTcl_ResetResult(tls, interp)
 45064  	} else {
 45065  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45066  		return TCL_ERROR
 45067  	}
 45068  	return TCL_OK
 45069  }
 45070  
 45071  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45072  	bp := tls.Alloc(8)
 45073  	defer tls.Free(8)
 45074  
 45075  	var rc int32
 45076  
 45077  	if objc != 2 {
 45078  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 45079  		return TCL_ERROR
 45080  	}
 45081  
 45082  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 45083  		return TCL_ERROR
 45084  	}
 45085  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 45086  
 45087  	if rc != 0 {
 45088  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45089  	} else {
 45090  		tcl.XTcl_ResetResult(tls, interp)
 45091  	}
 45092  	return TCL_OK
 45093  }
 45094  
 45095  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45096  	bp := tls.Alloc(8)
 45097  	defer tls.Free(8)
 45098  
 45099  	var nByte int32
 45100  
 45101  	if objc != 2 {
 45102  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 45103  		return TCL_ERROR
 45104  	}
 45105  
 45106  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 45107  		return TCL_ERROR
 45108  	}
 45109  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 45110  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 45111  
 45112  	return TCL_OK
 45113  }
 45114  
 45115  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45116  	bp := tls.Alloc(32)
 45117  	defer tls.Free(32)
 45118  
 45119  	var zBuf uintptr = uintptr(0)
 45120  	var rc int32
 45121  
 45122  	if objc != 4 {
 45123  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28667)
 45124  		return TCL_ERROR
 45125  	}
 45126  
 45127  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 45128  		return TCL_ERROR
 45129  	}
 45130  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) ||
 45131  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28) {
 45132  		return TCL_ERROR
 45133  	}
 45134  
 45135  	if *(*int32)(unsafe.Pointer(bp + 28)) > 0 {
 45136  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 45137  		if zBuf == uintptr(0) {
 45138  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28684, 0))
 45139  			return TCL_ERROR
 45140  		}
 45141  	}
 45142  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 28)), *(*int32)(unsafe.Pointer(bp + 24)))
 45143  	if rc == SQLITE_OK {
 45144  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 28))))
 45145  	} else {
 45146  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45147  	}
 45148  	tcl.XTcl_Free(tls, zBuf)
 45149  
 45150  	return func() int32 {
 45151  		if rc == SQLITE_OK {
 45152  			return TCL_OK
 45153  		}
 45154  		return TCL_ERROR
 45155  	}()
 45156  }
 45157  
 45158  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45159  	bp := tls.Alloc(16)
 45160  	defer tls.Free(16)
 45161  
 45162  	var rc int32
 45163  	var zBuf uintptr
 45164  
 45165  	if objc != 4 && objc != 5 {
 45166  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28745)
 45167  		return TCL_ERROR
 45168  	}
 45169  
 45170  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 45171  		return TCL_ERROR
 45172  	}
 45173  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) {
 45174  		return TCL_ERROR
 45175  	}
 45176  
 45177  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12)
 45178  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+12) != 0 {
 45179  		return TCL_ERROR
 45180  	}
 45181  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 12)), *(*int32)(unsafe.Pointer(bp + 8)))
 45182  	if rc != SQLITE_OK {
 45183  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 45184  	}
 45185  
 45186  	return func() int32 {
 45187  		if rc == SQLITE_OK {
 45188  			return TCL_OK
 45189  		}
 45190  		return TCL_ERROR
 45191  	}()
 45192  }
 45193  
 45194  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 45195  	var i int32
 45196  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd5))/uint64(unsafe.Sizeof(struct {
 45197  		FzName uintptr
 45198  		FxProc uintptr
 45199  	}{})); i++ {
 45200  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 45201  	}
 45202  	return TCL_OK
 45203  }
 45204  
 45205  var aObjCmd5 = [5]struct {
 45206  	FzName uintptr
 45207  	FxProc uintptr
 45208  }{
 45209  	{FzName: ts + 28772, FxProc: 0},
 45210  	{FzName: ts + 28790, FxProc: 0},
 45211  	{FzName: ts + 28809, FxProc: 0},
 45212  	{FzName: ts + 28828, FxProc: 0},
 45213  	{FzName: ts + 28846, FxProc: 0},
 45214  }
 45215  
 45216  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 45217  	var pBt uintptr
 45218  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 45219  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 45220  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 45221  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 45222  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 45223  	}
 45224  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 45225  	return TCL_OK
 45226  }
 45227  
 45228  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 45229  }
 45230  
 45231  func set_options(tls *libc.TLS, interp uintptr) {
 45232  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28880, ts+28899,
 45233  		TCL_GLOBAL_ONLY)
 45234  
 45235  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28901, ts+14193, TCL_GLOBAL_ONLY)
 45236  
 45237  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28909, ts+14193, TCL_GLOBAL_ONLY)
 45238  
 45239  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28927, ts+28940, TCL_GLOBAL_ONLY)
 45240  
 45241  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28944, ts+28899, TCL_GLOBAL_ONLY)
 45242  
 45243  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28951, ts+14193, TCL_GLOBAL_ONLY)
 45244  
 45245  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28963, ts+14193, TCL_GLOBAL_ONLY)
 45246  
 45247  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28969, ts+14193, TCL_GLOBAL_ONLY)
 45248  
 45249  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28991, ts+14193, TCL_GLOBAL_ONLY)
 45250  
 45251  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29003, ts+28899, TCL_GLOBAL_ONLY)
 45252  
 45253  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29011, ts+28899, TCL_GLOBAL_ONLY)
 45254  
 45255  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29015, ts+28899, TCL_GLOBAL_ONLY)
 45256  
 45257  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29040, ts+28899, TCL_GLOBAL_ONLY)
 45258  
 45259  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29045,
 45260  		ts+29060, TCL_GLOBAL_ONLY)
 45261  
 45262  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29062, ts+14193, TCL_GLOBAL_ONLY)
 45263  
 45264  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29071, ts+14193, TCL_GLOBAL_ONLY)
 45265  
 45266  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29081, ts+14193, TCL_GLOBAL_ONLY)
 45267  
 45268  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29093, ts+14193, TCL_GLOBAL_ONLY)
 45269  
 45270  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13460, ts+28899, TCL_GLOBAL_ONLY)
 45271  
 45272  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29107, ts+28899, TCL_GLOBAL_ONLY)
 45273  
 45274  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29115, ts+14193, TCL_GLOBAL_ONLY)
 45275  
 45276  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29120, ts+14193, TCL_GLOBAL_ONLY)
 45277  
 45278  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29125, ts+28899, TCL_GLOBAL_ONLY)
 45279  
 45280  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13580, ts+28899, TCL_GLOBAL_ONLY)
 45281  
 45282  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29141, ts+28899, TCL_GLOBAL_ONLY)
 45283  
 45284  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29150, ts+28899, TCL_GLOBAL_ONLY)
 45285  
 45286  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29156, ts+28899, TCL_GLOBAL_ONLY)
 45287  
 45288  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29167, ts+28899, TCL_GLOBAL_ONLY)
 45289  
 45290  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+1957, ts+28899, TCL_GLOBAL_ONLY)
 45291  
 45292  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29178, ts+14193, TCL_GLOBAL_ONLY)
 45293  
 45294  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29188, ts+14193, TCL_GLOBAL_ONLY)
 45295  
 45296  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29200, ts+28899, TCL_GLOBAL_ONLY)
 45297  
 45298  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29208, ts+28899, TCL_GLOBAL_ONLY)
 45299  
 45300  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29214, ts+14193, TCL_GLOBAL_ONLY)
 45301  
 45302  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 45303  
 45304  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10121, ts+28899, TCL_GLOBAL_ONLY)
 45305  
 45306  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29241, ts+28899, TCL_GLOBAL_ONLY)
 45307  
 45308  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29246, ts+28899, TCL_GLOBAL_ONLY)
 45309  
 45310  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13044, ts+28899, TCL_GLOBAL_ONLY)
 45311  
 45312  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29254, ts+28899, TCL_GLOBAL_ONLY)
 45313  
 45314  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29264, ts+28899, TCL_GLOBAL_ONLY)
 45315  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29275,
 45316  		ts+14193, TCL_GLOBAL_ONLY)
 45317  
 45318  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29294, ts+28899, TCL_GLOBAL_ONLY)
 45319  
 45320  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29306, ts+28899, TCL_GLOBAL_ONLY)
 45321  
 45322  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29319, ts+28899, TCL_GLOBAL_ONLY)
 45323  
 45324  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29327, ts+28899, TCL_GLOBAL_ONLY)
 45325  
 45326  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29332, ts+28899, TCL_GLOBAL_ONLY)
 45327  
 45328  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29338, ts+28899, TCL_GLOBAL_ONLY)
 45329  
 45330  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29342, ts+28899, TCL_GLOBAL_ONLY)
 45331  
 45332  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29357, ts+14193,
 45333  		TCL_GLOBAL_ONLY)
 45334  
 45335  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29377, ts+28899, TCL_GLOBAL_ONLY)
 45336  
 45337  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13439, ts+28899, TCL_GLOBAL_ONLY)
 45338  
 45339  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29397, ts+28899, TCL_GLOBAL_ONLY)
 45340  
 45341  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29406, ts+28899, TCL_GLOBAL_ONLY)
 45342  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29415, ts+28899, TCL_GLOBAL_ONLY)
 45343  
 45344  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29425, ts+28899, TCL_GLOBAL_ONLY)
 45345  
 45346  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29434, ts+28899, TCL_GLOBAL_ONLY)
 45347  
 45348  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29443, ts+28899, TCL_GLOBAL_ONLY)
 45349  
 45350  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29454, ts+28899, TCL_GLOBAL_ONLY)
 45351  
 45352  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+4974, ts+28899, TCL_GLOBAL_ONLY)
 45353  
 45354  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29461, ts+28899, TCL_GLOBAL_ONLY)
 45355  
 45356  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29475, ts+28899, TCL_GLOBAL_ONLY)
 45357  
 45358  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29486, ts+14193, TCL_GLOBAL_ONLY)
 45359  
 45360  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29491, ts+14193, TCL_GLOBAL_ONLY)
 45361  
 45362  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29496, ts+14193, TCL_GLOBAL_ONLY)
 45363  
 45364  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29501, ts+28899, TCL_GLOBAL_ONLY)
 45365  
 45366  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29506, ts+14193, TCL_GLOBAL_ONLY)
 45367  
 45368  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29519, ts+28899, TCL_GLOBAL_ONLY)
 45369  
 45370  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29533, ts+28899, TCL_GLOBAL_ONLY)
 45371  
 45372  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29542, ts+14193, TCL_GLOBAL_ONLY)
 45373  
 45374  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29546, ts+14193, TCL_GLOBAL_ONLY)
 45375  
 45376  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10868, ts+28899, TCL_GLOBAL_ONLY)
 45377  
 45378  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29561, ts+28899, TCL_GLOBAL_ONLY)
 45379  
 45380  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29573, ts+14193, TCL_GLOBAL_ONLY)
 45381  
 45382  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29586, ts+28899, TCL_GLOBAL_ONLY)
 45383  
 45384  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 45385  
 45386  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29604, ts+28899, TCL_GLOBAL_ONLY)
 45387  
 45388  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29614, ts+28899, TCL_GLOBAL_ONLY)
 45389  
 45390  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29624,
 45391  		func() uintptr {
 45392  			if uint64(unsafe.Sizeof(float64(0))) > uint64(unsafe.Sizeof(float64(0))) {
 45393  				return ts + 28899
 45394  			}
 45395  			return ts + 14193
 45396  		}(),
 45397  		TCL_GLOBAL_ONLY)
 45398  
 45399  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29636, ts+28899, TCL_GLOBAL_ONLY)
 45400  
 45401  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29645, ts+28899, TCL_GLOBAL_ONLY)
 45402  
 45403  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29658, ts+28899, TCL_GLOBAL_ONLY)
 45404  
 45405  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29668, ts+14193, TCL_GLOBAL_ONLY)
 45406  
 45407  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29678, ts+28899, TCL_GLOBAL_ONLY)
 45408  
 45409  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29685, ts+28899, TCL_GLOBAL_ONLY)
 45410  
 45411  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29689, ts+28899, TCL_GLOBAL_ONLY)
 45412  
 45413  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29703, ts+28899, TCL_GLOBAL_ONLY)
 45414  
 45415  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+9564, ts+28899, TCL_GLOBAL_ONLY)
 45416  
 45417  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29710, ts+28899, TCL_GLOBAL_ONLY)
 45418  
 45419  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29718, ts+28899, TCL_GLOBAL_ONLY)
 45420  
 45421  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29724, ts+14193, TCL_GLOBAL_ONLY)
 45422  
 45423  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29739, ts+28899, TCL_GLOBAL_ONLY)
 45424  
 45425  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29754, ts+28899, TCL_GLOBAL_ONLY)
 45426  
 45427  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29769, ts+28899, TCL_GLOBAL_ONLY)
 45428  
 45429  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+18810, ts+28899, TCL_GLOBAL_ONLY)
 45430  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29777, ts+28899, TCL_GLOBAL_ONLY)
 45431  
 45432  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29786, ts+14193, TCL_GLOBAL_ONLY)
 45433  
 45434  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29797, ts+14193, TCL_GLOBAL_ONLY)
 45435  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29816, ts+14193, TCL_GLOBAL_ONLY)
 45436  
 45437  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29837, ts+28899, TCL_GLOBAL_ONLY)
 45438  
 45439  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29850, ts+28899, TCL_GLOBAL_ONLY)
 45440  
 45441  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29859, ts+28899, TCL_GLOBAL_ONLY)
 45442  
 45443  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29866,
 45444  		func() uintptr {
 45445  			if 1 != 0 {
 45446  				return ts + 28899
 45447  			}
 45448  			return ts + 14193
 45449  		}(), TCL_GLOBAL_ONLY)
 45450  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29877,
 45451  		func() uintptr {
 45452  			if SQLITE_THREADSAFE == 1 {
 45453  				return ts + 28899
 45454  			}
 45455  			return ts + 14193
 45456  		}(), TCL_GLOBAL_ONLY)
 45457  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29889,
 45458  		func() uintptr {
 45459  			if SQLITE_THREADSAFE == 2 {
 45460  				return ts + 28899
 45461  			}
 45462  			return ts + 14193
 45463  		}(), TCL_GLOBAL_ONLY)
 45464  
 45465  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29901, ts+28899, TCL_GLOBAL_ONLY)
 45466  
 45467  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13665, ts+28899, TCL_GLOBAL_ONLY)
 45468  
 45469  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29908, ts+28899, TCL_GLOBAL_ONLY)
 45470  
 45471  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29916, ts+28899, TCL_GLOBAL_ONLY)
 45472  
 45473  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+15733, ts+28899, TCL_GLOBAL_ONLY)
 45474  
 45475  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29929, ts+28899, TCL_GLOBAL_ONLY)
 45476  
 45477  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29936, ts+28899, TCL_GLOBAL_ONLY)
 45478  
 45479  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29941, ts+28899, TCL_GLOBAL_ONLY)
 45480  
 45481  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29946, ts+28899, TCL_GLOBAL_ONLY)
 45482  
 45483  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29950, ts+28899, TCL_GLOBAL_ONLY)
 45484  
 45485  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29954, ts+14193, TCL_GLOBAL_ONLY)
 45486  
 45487  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13692, ts+28899, TCL_GLOBAL_ONLY)
 45488  
 45489  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29974, ts+14193, TCL_GLOBAL_ONLY)
 45490  
 45491  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29993, ts+14193, TCL_GLOBAL_ONLY)
 45492  
 45493  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30007, ts+14193, TCL_GLOBAL_ONLY)
 45494  
 45495  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30016, ts+14193, TCL_GLOBAL_ONLY)
 45496  
 45497  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30040, ts+14193, TCL_GLOBAL_ONLY)
 45498  
 45499  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30061, ts+14193, TCL_GLOBAL_ONLY)
 45500  
 45501  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30068, ts+14193, TCL_GLOBAL_ONLY)
 45502  
 45503  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30081, ts+14193, TCL_GLOBAL_ONLY)
 45504  
 45505  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30091, ts+28899, TCL_GLOBAL_ONLY)
 45506  
 45507  	{
 45508  		tcl.XTcl_LinkVar(tls, interp, ts+30102, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45509  	}
 45510  
 45511  	{
 45512  		tcl.XTcl_LinkVar(tls, interp, ts+30120, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45513  	}
 45514  
 45515  	{
 45516  		tcl.XTcl_LinkVar(tls, interp, ts+30138, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45517  	}
 45518  
 45519  	{
 45520  		tcl.XTcl_LinkVar(tls, interp, ts+30160, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45521  	}
 45522  
 45523  	{
 45524  		tcl.XTcl_LinkVar(tls, interp, ts+30182, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45525  	}
 45526  
 45527  	{
 45528  		tcl.XTcl_LinkVar(tls, interp, ts+30209, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45529  	}
 45530  
 45531  	{
 45532  		tcl.XTcl_LinkVar(tls, interp, ts+30228, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45533  	}
 45534  
 45535  	{
 45536  		tcl.XTcl_LinkVar(tls, interp, ts+30252, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45537  	}
 45538  
 45539  	{
 45540  		tcl.XTcl_LinkVar(tls, interp, ts+30279, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45541  	}
 45542  
 45543  	{
 45544  		tcl.XTcl_LinkVar(tls, interp, ts+30300, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45545  	}
 45546  
 45547  	{
 45548  		tcl.XTcl_LinkVar(tls, interp, ts+30322, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45549  	}
 45550  
 45551  	{
 45552  		tcl.XTcl_LinkVar(tls, interp, ts+30353, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45553  	}
 45554  
 45555  	{
 45556  		tcl.XTcl_LinkVar(tls, interp, ts+30378, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45557  	}
 45558  
 45559  	{
 45560  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45561  	}
 45562  
 45563  	{
 45564  		tcl.XTcl_LinkVar(tls, interp, ts+30429, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45565  	}
 45566  
 45567  	{
 45568  		tcl.XTcl_LinkVar(tls, interp, ts+30456, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45569  	}
 45570  
 45571  	{
 45572  		tcl.XTcl_LinkVar(tls, interp, ts+30483, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45573  	}
 45574  
 45575  	{
 45576  		tcl.XTcl_LinkVar(tls, interp, ts+30514, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45577  	}
 45578  
 45579  	{
 45580  		tcl.XTcl_LinkVar(tls, interp, ts+30534, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45581  	}
 45582  
 45583  	{
 45584  		tcl.XTcl_LinkVar(tls, interp, ts+30563, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45585  	}
 45586  
 45587  	{
 45588  		tcl.XTcl_LinkVar(tls, interp, ts+30589, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 45589  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45590  
 45591  	}
 45592  
 45593  	{
 45594  		tcl.XTcl_LinkVar(tls, interp, ts+30600, uintptr(unsafe.Pointer(&cv___GNUC__)),
 45595  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45596  
 45597  	}
 45598  }
 45599  
 45600  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 45601  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 45602  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 45603  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 45604  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 45605  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 45606  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 45607  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 45608  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 45609  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 45610  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 45611  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 45612  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 45613  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 45614  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 45615  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45616  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45617  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 45618  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 45619  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 45620  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 45621  var cv___GNUC__ int32 = 1
 45622  
 45623  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 45624  	set_options(tls, interp)
 45625  	return TCL_OK
 45626  }
 45627  
 45628  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 45629  	var i int32
 45630  	var sz int32
 45631  	sz = int32(libc.Xstrlen(tls, z))
 45632  	for i = sz - 1; i > 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 45633  	}
 45634  	if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 45635  		libc.Xmemmove(tls, z+uintptr(i+1), z+uintptr(sz-3), uint64(4))
 45636  	}
 45637  }
 45638  
 45639  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 45640  	var rc int32 = SQLITE_ERROR
 45641  
 45642  	rc = libc.Xaccess(tls, zFile, F_OK)
 45643  	if rc != 0 {
 45644  		if *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) == ENOENT {
 45645  			if pbExists != 0 {
 45646  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 45647  			}
 45648  			rc = SQLITE_OK
 45649  		}
 45650  	} else {
 45651  		if pbExists != 0 {
 45652  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 45653  		}
 45654  		rc = libc.Xunlink(tls, zFile)
 45655  	}
 45656  	return rc
 45657  }
 45658  
 45659  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 45660  	bp := tls.Alloc(156)
 45661  	defer tls.Free(156)
 45662  
 45663  	var zBuf uintptr
 45664  	var nBuf int32
 45665  	var rc int32 = 0
 45666  	var i int32
 45667  
 45668  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30609, ts + 30620, ts + 30627}
 45669  
 45670  	*(*[6]MFile)(unsafe.Pointer(bp + 56)) = [6]MFile{
 45671  		{FzFmt: ts + 30634},
 45672  		{FzFmt: ts + 30641},
 45673  		{FzFmt: ts + 30656},
 45674  		{FzFmt: ts + 30634, Fb83: 1},
 45675  		{FzFmt: ts + 30641, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 45676  		{FzFmt: ts + 30656, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 45677  	}
 45678  
 45679  	var pVfs uintptr = uintptr(0)
 45680  
 45681  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 45682  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 45683  	if zBuf == uintptr(0) {
 45684  		return SQLITE_NOMEM
 45685  	}
 45686  
 45687  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([4]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 45688  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*8)), libc.VaList(bp, zFile))
 45689  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 45690  		if rc == 0 && i != 0 {
 45691  			sqlite3Delete83Name(tls, zBuf)
 45692  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 45693  		}
 45694  	}
 45695  
 45696  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([6]MFile{}))/uint64(unsafe.Sizeof(MFile{})); i++ {
 45697  		var p uintptr = bp + 56 + uintptr(i)*16
 45698  		var iChunk int32
 45699  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 45700  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 45701  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 45702  				sqlite3Delete83Name(tls, zBuf)
 45703  			}
 45704  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+152)
 45705  			if *(*int32)(unsafe.Pointer(bp + 152)) == 0 || rc != 0 {
 45706  				break
 45707  			}
 45708  		}
 45709  	}
 45710  
 45711  	sqlite3.Xsqlite3_free(tls, zBuf)
 45712  	return func() int32 {
 45713  		if rc != 0 {
 45714  			return SQLITE_ERROR
 45715  		}
 45716  		return SQLITE_OK
 45717  	}()
 45718  }
 45719  
 45720  type MFile = struct {
 45721  	FzFmt    uintptr
 45722  	FiOffset int32
 45723  	Fb83     int32
 45724  }
 45725  
 45726  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 45727  	return TCL_OK
 45728  }
 45729  
 45730  type devsym_file1 = struct {
 45731  	Fbase  sqlite3_file
 45732  	FpReal uintptr
 45733  }
 45734  
 45735  type devsym_file = devsym_file1
 45736  
 45737  type DevsymGlobal = struct {
 45738  	FpVfs        uintptr
 45739  	FiDeviceChar int32
 45740  	FiSectorSize int32
 45741  	FnWriteCrash int32
 45742  	F__ccgo_pad1 [4]byte
 45743  }
 45744  
 45745  var g1 = DevsymGlobal{FiSectorSize: 512}
 45746  
 45747  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 45748  	var p uintptr = pFile
 45749  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45750  	return SQLITE_OK
 45751  }
 45752  
 45753  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45754  	var p uintptr = pFile
 45755  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45756  }
 45757  
 45758  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45759  	var p uintptr = pFile
 45760  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45761  }
 45762  
 45763  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 45764  	var p uintptr = pFile
 45765  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 45766  }
 45767  
 45768  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 45769  	var p uintptr = pFile
 45770  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 45771  }
 45772  
 45773  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 45774  	var p uintptr = pFile
 45775  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 45776  }
 45777  
 45778  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 45779  	var p uintptr = pFile
 45780  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 45781  }
 45782  
 45783  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 45784  	var p uintptr = pFile
 45785  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 45786  }
 45787  
 45788  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 45789  	var p uintptr = pFile
 45790  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 45791  }
 45792  
 45793  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 45794  	var p uintptr = pFile
 45795  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 45796  }
 45797  
 45798  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45799  	return g1.FiSectorSize
 45800  }
 45801  
 45802  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45803  	return g1.FiDeviceChar
 45804  }
 45805  
 45806  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 45807  	var p uintptr = pFile
 45808  	return (*struct {
 45809  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 45810  	})(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)
 45811  }
 45812  
 45813  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 45814  	var p uintptr = pFile
 45815  	return (*struct {
 45816  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 45817  	})(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)
 45818  }
 45819  
 45820  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 45821  	var p uintptr = pFile
 45822  	(*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)
 45823  }
 45824  
 45825  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 45826  	var p uintptr = pFile
 45827  	return (*struct {
 45828  		f func(*libc.TLS, uintptr, int32) int32
 45829  	})(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)
 45830  }
 45831  
 45832  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45833  	var rc int32
 45834  	var p uintptr = pFile
 45835  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45836  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45837  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45838  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 45839  	}
 45840  	return rc
 45841  }
 45842  
 45843  var devsym_io_methods = sqlite3_io_methods{
 45844  	FiVersion:               2,
 45845  	FxClose:                 0,
 45846  	FxRead:                  0,
 45847  	FxWrite:                 0,
 45848  	FxTruncate:              0,
 45849  	FxSync:                  0,
 45850  	FxFileSize:              0,
 45851  	FxLock:                  0,
 45852  	FxUnlock:                0,
 45853  	FxCheckReservedLock:     0,
 45854  	FxFileControl:           0,
 45855  	FxSectorSize:            0,
 45856  	FxDeviceCharacteristics: 0,
 45857  	FxShmMap:                0,
 45858  	FxShmLock:               0,
 45859  	FxShmBarrier:            0,
 45860  	FxShmUnmap:              0,
 45861  }
 45862  
 45863  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 45864  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 45865  }
 45866  
 45867  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 45868  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 45869  }
 45870  
 45871  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 45872  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 45873  }
 45874  
 45875  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 45876  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 45877  }
 45878  
 45879  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 45880  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 45881  }
 45882  
 45883  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 45884  	return (*struct {
 45885  		f func(*libc.TLS, uintptr, uintptr) int32
 45886  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 45887  }
 45888  
 45889  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45890  	var p uintptr = pFile
 45891  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45892  }
 45893  
 45894  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45895  	var p uintptr = pFile
 45896  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45897  }
 45898  
 45899  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45900  	var p uintptr = pFile
 45901  	if g1.FnWriteCrash > 0 {
 45902  		g1.FnWriteCrash--
 45903  		if g1.FnWriteCrash == 0 {
 45904  			libc.Xabort(tls)
 45905  		}
 45906  	}
 45907  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45908  }
 45909  
 45910  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45911  	var rc int32
 45912  	var p uintptr = pFile
 45913  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45914  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45915  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45916  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 45917  	}
 45918  	return rc
 45919  }
 45920  
 45921  var writecrash_io_methods = sqlite3_io_methods{
 45922  	FiVersion:               2,
 45923  	FxClose:                 0,
 45924  	FxRead:                  0,
 45925  	FxWrite:                 0,
 45926  	FxTruncate:              0,
 45927  	FxSync:                  0,
 45928  	FxFileSize:              0,
 45929  	FxLock:                  0,
 45930  	FxUnlock:                0,
 45931  	FxCheckReservedLock:     0,
 45932  	FxFileControl:           0,
 45933  	FxSectorSize:            0,
 45934  	FxDeviceCharacteristics: 0,
 45935  	FxShmMap:                0,
 45936  	FxShmLock:               0,
 45937  	FxShmBarrier:            0,
 45938  	FxShmUnmap:              0,
 45939  }
 45940  
 45941  var devsym_vfs = sqlite3_vfs{
 45942  	FiVersion:      2,
 45943  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45944  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45945  	FzName:         ts + 30667,
 45946  	FxOpen:         0,
 45947  	FxDelete:       0,
 45948  	FxAccess:       0,
 45949  	FxFullPathname: 0,
 45950  	FxRandomness:   0,
 45951  	FxSleep:        0,
 45952  	FxCurrentTime:  0,
 45953  }
 45954  
 45955  var writecrash_vfs = sqlite3_vfs{
 45956  	FiVersion:      2,
 45957  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45958  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45959  	FzName:         ts + 30674,
 45960  	FxOpen:         0,
 45961  	FxDelete:       0,
 45962  	FxAccess:       0,
 45963  	FxFullPathname: 0,
 45964  	FxRandomness:   0,
 45965  	FxSleep:        0,
 45966  	FxCurrentTime:  0,
 45967  }
 45968  
 45969  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 45970  	if g1.FpVfs == uintptr(0) {
 45971  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45972  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45973  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45974  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45975  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45976  	}
 45977  	if iDeviceChar >= 0 {
 45978  		g1.FiDeviceChar = iDeviceChar
 45979  	} else {
 45980  		g1.FiDeviceChar = 0
 45981  	}
 45982  	if iSectorSize >= 0 {
 45983  		g1.FiSectorSize = iSectorSize
 45984  	} else {
 45985  		g1.FiSectorSize = 512
 45986  	}
 45987  }
 45988  
 45989  func devsym_unregister(tls *libc.TLS) {
 45990  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 45991  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 45992  	g1.FpVfs = uintptr(0)
 45993  	g1.FiDeviceChar = 0
 45994  	g1.FiSectorSize = 0
 45995  }
 45996  
 45997  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 45998  	if g1.FpVfs == uintptr(0) {
 45999  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 46000  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 46001  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 46002  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 46003  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 46004  	}
 46005  	g1.FnWriteCrash = nWrite
 46006  }
 46007  
 46008  type Tcl_StatBuf = stat
 46009  
 46010  type stat64 = struct {
 46011  	Fst_dev     uint64
 46012  	Fst_ino     uint64
 46013  	Fst_mode    uint32
 46014  	Fst_nlink   uint32
 46015  	Fst_uid     uint32
 46016  	Fst_gid     uint32
 46017  	Fst_rdev    uint64
 46018  	F__pad1     uint64
 46019  	Fst_size    int64
 46020  	Fst_blksize int32
 46021  	F__pad2     int32
 46022  	Fst_blocks  int64
 46023  	Fst_atim    struct {
 46024  		Ftv_sec  int64
 46025  		Ftv_nsec int64
 46026  	}
 46027  	Fst_mtim struct {
 46028  		Ftv_sec  int64
 46029  		Ftv_nsec int64
 46030  	}
 46031  	Fst_ctim struct {
 46032  		Ftv_sec  int64
 46033  		Ftv_nsec int64
 46034  	}
 46035  	F__glibc_reserved [2]int32
 46036  }
 46037  
 46038  type statx_timestamp = struct {
 46039  	Ftv_sec     int64
 46040  	Ftv_nsec    uint32
 46041  	F__reserved int32
 46042  }
 46043  
 46044  type statx = struct {
 46045  	Fstx_mask            uint32
 46046  	Fstx_blksize         uint32
 46047  	Fstx_attributes      uint64
 46048  	Fstx_nlink           uint32
 46049  	Fstx_uid             uint32
 46050  	Fstx_gid             uint32
 46051  	Fstx_mode            uint16
 46052  	F__spare0            [1]uint16
 46053  	Fstx_ino             uint64
 46054  	Fstx_size            uint64
 46055  	Fstx_blocks          uint64
 46056  	Fstx_attributes_mask uint64
 46057  	Fstx_atime           struct {
 46058  		Ftv_sec     int64
 46059  		Ftv_nsec    uint32
 46060  		F__reserved int32
 46061  	}
 46062  	Fstx_btime struct {
 46063  		Ftv_sec     int64
 46064  		Ftv_nsec    uint32
 46065  		F__reserved int32
 46066  	}
 46067  	Fstx_ctime struct {
 46068  		Ftv_sec     int64
 46069  		Ftv_nsec    uint32
 46070  		F__reserved int32
 46071  	}
 46072  	Fstx_mtime struct {
 46073  		Ftv_sec     int64
 46074  		Ftv_nsec    uint32
 46075  		F__reserved int32
 46076  	}
 46077  	Fstx_rdev_major uint32
 46078  	Fstx_rdev_minor uint32
 46079  	Fstx_dev_major  uint32
 46080  	Fstx_dev_minor  uint32
 46081  	Fstx_mnt_id     uint64
 46082  	F__spare2       uint64
 46083  	F__spare3       [12]uint64
 46084  }
 46085  
 46086  type flock64 = struct {
 46087  	Fl_type      int16
 46088  	Fl_whence    int16
 46089  	F__ccgo_pad1 [4]byte
 46090  	Fl_start     int64
 46091  	Fl_len       int64
 46092  	Fl_pid       int32
 46093  	F__ccgo_pad2 [4]byte
 46094  }
 46095  
 46096  type iovec = struct {
 46097  	Fiov_base uintptr
 46098  	Fiov_len  size_t
 46099  }
 46100  
 46101  type f_owner_ex = struct {
 46102  	Ftype uint32
 46103  	Fpid  int32
 46104  }
 46105  
 46106  type file_handle = struct {
 46107  	F__ccgo_pad1  [0]uint32
 46108  	Fhandle_bytes uint32
 46109  	Fhandle_type  int32
 46110  }
 46111  
 46112  type dirent64 = struct {
 46113  	Fd_ino       uint64
 46114  	Fd_off       int64
 46115  	Fd_reclen    uint16
 46116  	Fd_type      uint8
 46117  	Fd_name      [256]uint8
 46118  	F__ccgo_pad1 [5]byte
 46119  }
 46120  
 46121  type fs_vtab1 = struct {
 46122  	Fbase sqlite3_vtab
 46123  	Fdb   uintptr
 46124  	FzDb  uintptr
 46125  	FzTbl uintptr
 46126  }
 46127  
 46128  type fs_vtab = fs_vtab1
 46129  type fs_cursor1 = struct {
 46130  	Fbase   sqlite3_vtab_cursor
 46131  	FpStmt  uintptr
 46132  	FzBuf   uintptr
 46133  	FnBuf   int32
 46134  	FnAlloc int32
 46135  }
 46136  
 46137  type fs_cursor = fs_cursor1
 46138  
 46139  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 46140  
 46141  type FsdirVtab = FsdirVtab1
 46142  type FsdirCsr1 = struct {
 46143  	Fbase   sqlite3_vtab_cursor
 46144  	FzDir   uintptr
 46145  	FpDir   uintptr
 46146  	FiRowid sqlite3_int64
 46147  	FpEntry uintptr
 46148  }
 46149  
 46150  type FsdirCsr = FsdirCsr1
 46151  
 46152  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46153  	var pTab uintptr
 46154  
 46155  	if argc != 3 {
 46156  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46157  		return SQLITE_ERROR
 46158  	}
 46159  
 46160  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 46161  	if !(pTab != 0) {
 46162  		return SQLITE_NOMEM
 46163  	}
 46164  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FsdirVtab{})))
 46165  
 46166  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 46167  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30685)
 46168  
 46169  	return SQLITE_OK
 46170  }
 46171  
 46172  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 46173  	sqlite3.Xsqlite3_free(tls, pVtab)
 46174  	return SQLITE_OK
 46175  }
 46176  
 46177  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46178  	var ii int32
 46179  
 46180  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 46181  
 46182  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46183  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46184  		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 {
 46185  			var pUsage uintptr
 46186  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46187  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 46188  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46189  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 46190  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 46191  			break
 46192  		}
 46193  	}
 46194  
 46195  	return SQLITE_OK
 46196  }
 46197  
 46198  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46199  	var pCur uintptr
 46200  
 46201  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(FsdirCsr{}))+uint64(256)))
 46202  	if pCur == uintptr(0) {
 46203  		return SQLITE_NOMEM
 46204  	}
 46205  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FsdirCsr{})))
 46206  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46207  	return SQLITE_OK
 46208  }
 46209  
 46210  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 46211  	var pCur uintptr = cur
 46212  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 46213  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 46214  	}
 46215  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 46216  	sqlite3.Xsqlite3_free(tls, pCur)
 46217  	return SQLITE_OK
 46218  }
 46219  
 46220  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 46221  	var pCsr uintptr = cur
 46222  
 46223  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 46224  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46225  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 46226  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46227  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 46228  		}
 46229  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 46230  	}
 46231  
 46232  	return SQLITE_OK
 46233  }
 46234  
 46235  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46236  	var pCsr uintptr = pVtabCursor
 46237  	var zDir uintptr
 46238  	var nDir int32
 46239  
 46240  	if idxNum != 1 || argc != 1 {
 46241  		return SQLITE_ERROR
 46242  	}
 46243  
 46244  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 46245  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 46246  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 46247  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46248  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 46249  	}
 46250  
 46251  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46252  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46253  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 46254  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 46255  		return SQLITE_NOMEM
 46256  	}
 46257  	libc.Xmemcpy(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint64(nDir+1))
 46258  
 46259  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 46260  	return fsdirNext1(tls, pVtabCursor)
 46261  }
 46262  
 46263  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 46264  	var pCsr uintptr = cur
 46265  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 46266  }
 46267  
 46268  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46269  	var pCsr uintptr = cur
 46270  	switch i {
 46271  	case 0:
 46272  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 46273  		break
 46274  
 46275  	case 1:
 46276  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+19, -1, libc.UintptrFromInt32(-1))
 46277  		break
 46278  
 46279  	default:
 46280  	}
 46281  
 46282  	return SQLITE_OK
 46283  }
 46284  
 46285  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46286  	var pCsr uintptr = cur
 46287  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 46288  	return SQLITE_OK
 46289  }
 46290  
 46291  type FstreeVtab1 = struct {
 46292  	Fbase sqlite3_vtab
 46293  	Fdb   uintptr
 46294  }
 46295  
 46296  type FstreeVtab = FstreeVtab1
 46297  type FstreeCsr1 = struct {
 46298  	Fbase        sqlite3_vtab_cursor
 46299  	FpStmt       uintptr
 46300  	Ffd          int32
 46301  	F__ccgo_pad1 [4]byte
 46302  }
 46303  
 46304  type FstreeCsr = FstreeCsr1
 46305  
 46306  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46307  	var pTab uintptr
 46308  
 46309  	if argc != 3 {
 46310  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46311  		return SQLITE_ERROR
 46312  	}
 46313  
 46314  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 46315  	if !(pTab != 0) {
 46316  		return SQLITE_NOMEM
 46317  	}
 46318  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FstreeVtab{})))
 46319  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 46320  
 46321  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 46322  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30714)
 46323  
 46324  	return SQLITE_OK
 46325  }
 46326  
 46327  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46328  	sqlite3.Xsqlite3_free(tls, pVtab)
 46329  	return SQLITE_OK
 46330  }
 46331  
 46332  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46333  	var ii int32
 46334  
 46335  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46336  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46337  		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 ||
 46338  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 46339  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 46340  			var pUsage uintptr
 46341  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46342  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 46343  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46344  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 46345  			return SQLITE_OK
 46346  		}
 46347  	}
 46348  
 46349  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 46350  	return SQLITE_OK
 46351  }
 46352  
 46353  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46354  	var pCur uintptr
 46355  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 46356  	if pCur == uintptr(0) {
 46357  		return SQLITE_NOMEM
 46358  	}
 46359  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FstreeCsr{})))
 46360  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 46361  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46362  	return SQLITE_OK
 46363  }
 46364  
 46365  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 46366  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 46367  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 46368  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 46369  	}
 46370  }
 46371  
 46372  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 46373  	var pCsr uintptr = cur
 46374  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46375  	fstreeCloseFd(tls, pCsr)
 46376  	sqlite3.Xsqlite3_free(tls, pCsr)
 46377  	return SQLITE_OK
 46378  }
 46379  
 46380  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 46381  	var pCsr uintptr = cur
 46382  	var rc int32
 46383  
 46384  	fstreeCloseFd(tls, pCsr)
 46385  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46386  	if rc != SQLITE_ROW {
 46387  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46388  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46389  	} else {
 46390  		rc = SQLITE_OK
 46391  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 46392  	}
 46393  
 46394  	return rc
 46395  }
 46396  
 46397  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46398  	bp := tls.Alloc(2)
 46399  	defer tls.Free(2)
 46400  
 46401  	var pCsr uintptr = pVtabCursor
 46402  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 46403  	var rc int32
 46404  	var zSql uintptr = ts + 30750
 46405  	var zRoot uintptr
 46406  	var nRoot int32
 46407  	var zPrefix uintptr
 46408  	var nPrefix int32
 46409  	var zDir uintptr
 46410  	var nDir int32
 46411  	*(*[2]uint8)(unsafe.Pointer(bp)) = [2]uint8{uint8(0), uint8(0)}
 46412  
 46413  	zRoot = ts + 30982
 46414  	nRoot = 1
 46415  	zPrefix = ts + 584
 46416  	nPrefix = 0
 46417  
 46418  	zDir = zRoot
 46419  	nDir = nRoot
 46420  
 46421  	fstreeCloseFd(tls, pCsr)
 46422  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46423  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46424  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 46425  	if rc != SQLITE_OK {
 46426  		return rc
 46427  	}
 46428  
 46429  	if idxNum != 0 {
 46430  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46431  		switch idxNum {
 46432  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 46433  			*(*uint8)(unsafe.Pointer(bp)) = uint8('*')
 46434  			*(*uint8)(unsafe.Pointer(bp + 1)) = uint8('?')
 46435  			break
 46436  			fallthrough
 46437  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 46438  			*(*uint8)(unsafe.Pointer(bp)) = uint8('_')
 46439  			*(*uint8)(unsafe.Pointer(bp + 1)) = uint8('%')
 46440  			break
 46441  		}
 46442  
 46443  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 46444  			var i int32
 46445  			for i = nPrefix; *(*uint8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 46446  				if int32(*(*uint8)(unsafe.Pointer(zQuery + uintptr(i)))) == int32(*(*uint8)(unsafe.Pointer(bp))) || int32(*(*uint8)(unsafe.Pointer(zQuery + uintptr(i)))) == int32(*(*uint8)(unsafe.Pointer(bp + 1))) {
 46447  					break
 46448  				}
 46449  				if int32(*(*uint8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 46450  					nDir = i
 46451  				}
 46452  			}
 46453  			zDir = zQuery
 46454  		}
 46455  	}
 46456  	if nDir == 0 {
 46457  		nDir = 1
 46458  	}
 46459  
 46460  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 46461  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 46462  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 46463  
 46464  	return fstreeNext(tls, pVtabCursor)
 46465  }
 46466  
 46467  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 46468  	var pCsr uintptr = cur
 46469  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 46470  }
 46471  
 46472  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46473  	bp := tls.Alloc(128)
 46474  	defer tls.Free(128)
 46475  
 46476  	var pCsr uintptr = cur
 46477  	if i == 0 {
 46478  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 46479  	} else {
 46480  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 46481  
 46482  		if (*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0170000) == uint32(0100000) {
 46483  			if i == 1 {
 46484  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 46485  			} else {
 46486  				var nRead int32
 46487  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode+uint32(1)))
 46488  				if !(aBuf != 0) {
 46489  					return SQLITE_NOMEM
 46490  				}
 46491  				nRead = int32(libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_mode)))
 46492  				if uint32(nRead) != (*stat)(unsafe.Pointer(bp)).Fst_mode {
 46493  					return SQLITE_IOERR
 46494  				}
 46495  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 46496  				sqlite3.Xsqlite3_free(tls, aBuf)
 46497  			}
 46498  		}
 46499  	}
 46500  
 46501  	return SQLITE_OK
 46502  }
 46503  
 46504  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46505  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 46506  	return SQLITE_OK
 46507  }
 46508  
 46509  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46510  	var pVtab uintptr
 46511  	var nByte int32
 46512  	var zTbl uintptr
 46513  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 46514  
 46515  	if argc != 4 {
 46516  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46517  		return SQLITE_ERROR
 46518  	}
 46519  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*8))
 46520  
 46521  	nByte = int32(uint64(unsafe.Sizeof(fs_vtab{})) + uint64(int32(libc.Xstrlen(tls, zTbl))) + uint64(1) + uint64(int32(libc.Xstrlen(tls, zDb))) + uint64(1))
 46522  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 46523  	if !(pVtab != 0) {
 46524  		return SQLITE_NOMEM
 46525  	}
 46526  
 46527  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*48
 46528  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+uint64(1))
 46529  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 46530  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl))
 46531  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb))
 46532  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 46533  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30984)
 46534  
 46535  	return SQLITE_OK
 46536  }
 46537  
 46538  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46539  	sqlite3.Xsqlite3_free(tls, pVtab)
 46540  	return SQLITE_OK
 46541  }
 46542  
 46543  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46544  	var pCur uintptr
 46545  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 46546  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46547  	return SQLITE_OK
 46548  }
 46549  
 46550  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 46551  	var pCur uintptr = cur
 46552  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46553  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 46554  	sqlite3.Xsqlite3_free(tls, pCur)
 46555  	return SQLITE_OK
 46556  }
 46557  
 46558  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 46559  	var pCur uintptr = cur
 46560  	var rc int32
 46561  
 46562  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46563  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 46564  		rc = SQLITE_OK
 46565  	}
 46566  
 46567  	return rc
 46568  }
 46569  
 46570  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46571  	bp := tls.Alloc(32)
 46572  	defer tls.Free(32)
 46573  
 46574  	var rc int32
 46575  	var pCur uintptr = pVtabCursor
 46576  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 46577  
 46578  	if idxNum == 1 {
 46579  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 46580  			ts+31021, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 46581  		if !(zStmt != 0) {
 46582  			return SQLITE_NOMEM
 46583  		}
 46584  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 46585  		sqlite3.Xsqlite3_free(tls, zStmt)
 46586  		if rc == SQLITE_OK {
 46587  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 46588  		}
 46589  	} else {
 46590  		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))
 46591  		if !(zStmt != 0) {
 46592  			return SQLITE_NOMEM
 46593  		}
 46594  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 46595  		sqlite3.Xsqlite3_free(tls, zStmt)
 46596  	}
 46597  
 46598  	if rc == SQLITE_OK {
 46599  		rc = fsNext(tls, pVtabCursor)
 46600  	}
 46601  	return rc
 46602  }
 46603  
 46604  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46605  	bp := tls.Alloc(128)
 46606  	defer tls.Free(128)
 46607  
 46608  	var pCur uintptr = cur
 46609  
 46610  	if i == 0 {
 46611  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 46612  	} else {
 46613  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 46614  
 46615  		var fd int32
 46616  		var n int32
 46617  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 46618  		if fd < 0 {
 46619  			return SQLITE_IOERR
 46620  		}
 46621  		libc.Xfstat(tls, fd, bp)
 46622  
 46623  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= int64((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 46624  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 46625  			var zNew uintptr
 46626  			if nNew < int64(1024) {
 46627  				nNew = int64(1024)
 46628  			}
 46629  
 46630  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 46631  			if zNew == uintptr(0) {
 46632  				libc.Xclose(tls, fd)
 46633  				return SQLITE_NOMEM
 46634  			}
 46635  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 46636  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 46637  		}
 46638  
 46639  		n = int32(libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_size)))
 46640  		libc.Xclose(tls, fd)
 46641  		if int64(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 46642  			return SQLITE_ERROR
 46643  		}
 46644  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 46645  		*(*uint8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = uint8(0)
 46646  
 46647  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 46648  	}
 46649  	return SQLITE_OK
 46650  }
 46651  
 46652  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46653  	var pCur uintptr = cur
 46654  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 46655  	return SQLITE_OK
 46656  }
 46657  
 46658  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 46659  	var pCur uintptr = cur
 46660  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 46661  }
 46662  
 46663  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46664  	var ii int32
 46665  
 46666  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46667  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46668  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 46669  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 46670  			var pUsage uintptr
 46671  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46672  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 46673  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46674  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 46675  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 46676  			break
 46677  		}
 46678  	}
 46679  
 46680  	return SQLITE_OK
 46681  }
 46682  
 46683  var fsModule = sqlite3_module{
 46684  	FxCreate:     0,
 46685  	FxConnect:    0,
 46686  	FxBestIndex:  0,
 46687  	FxDisconnect: 0,
 46688  	FxDestroy:    0,
 46689  	FxOpen:       0,
 46690  	FxClose:      0,
 46691  	FxFilter:     0,
 46692  	FxNext:       0,
 46693  	FxEof:        0,
 46694  	FxColumn:     0,
 46695  	FxRowid:      0,
 46696  }
 46697  
 46698  var fsdirModule = sqlite3_module{
 46699  	FxCreate:     0,
 46700  	FxConnect:    0,
 46701  	FxBestIndex:  0,
 46702  	FxDisconnect: 0,
 46703  	FxDestroy:    0,
 46704  	FxOpen:       0,
 46705  	FxClose:      0,
 46706  	FxFilter:     0,
 46707  	FxNext:       0,
 46708  	FxEof:        0,
 46709  	FxColumn:     0,
 46710  	FxRowid:      0,
 46711  }
 46712  
 46713  var fstreeModule = sqlite3_module{
 46714  	FxCreate:     0,
 46715  	FxConnect:    0,
 46716  	FxBestIndex:  0,
 46717  	FxDisconnect: 0,
 46718  	FxDestroy:    0,
 46719  	FxOpen:       0,
 46720  	FxClose:      0,
 46721  	FxFilter:     0,
 46722  	FxNext:       0,
 46723  	FxEof:        0,
 46724  	FxColumn:     0,
 46725  	FxRowid:      0,
 46726  }
 46727  
 46728  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46729  	bp := tls.Alloc(8)
 46730  	defer tls.Free(8)
 46731  
 46732  	if objc != 2 {
 46733  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 46734  		return TCL_ERROR
 46735  	}
 46736  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 46737  		return TCL_ERROR
 46738  	}
 46739  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31055, uintptr(unsafe.Pointer(&fsModule)), interp)
 46740  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 46741  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31058, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 46742  	return TCL_OK
 46743  }
 46744  
 46745  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 46746  	var i int32
 46747  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd6))/uint64(unsafe.Sizeof(struct {
 46748  		FzName      uintptr
 46749  		FxProc      uintptr
 46750  		FclientData uintptr
 46751  	}{})); i++ {
 46752  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 46753  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 46754  	}
 46755  	return TCL_OK
 46756  }
 46757  
 46758  var aObjCmd6 = [1]struct {
 46759  	FzName      uintptr
 46760  	FxProc      uintptr
 46761  	FclientData uintptr
 46762  }{
 46763  	{FzName: ts + 31065, FxProc: 0},
 46764  }
 46765  
 46766  type fd_set2 = struct{ F__fds_bits [16]int64 }
 46767  
 46768  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 46769  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 46770  	if !(z != 0) && nByte > 0 {
 46771  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 46772  	}
 46773  	return z
 46774  }
 46775  
 46776  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46777  	bp := tls.Alloc(1004)
 46778  	defer tls.Free(1004)
 46779  
 46780  	var iMin int32
 46781  	var iMax int32
 46782  	var n int32
 46783  
 46784  	var i int32
 46785  
 46786  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46787  	if iMin < 0 {
 46788  		iMin = 0
 46789  	}
 46790  	if uint64(iMin) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 46791  		iMin = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 46792  	}
 46793  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46794  	if iMax < iMin {
 46795  		iMax = iMin
 46796  	}
 46797  	if uint64(iMax) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 46798  		iMax = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 46799  	}
 46800  	n = iMin
 46801  	if iMax > iMin {
 46802  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 46803  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 46804  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 46805  	}
 46806  
 46807  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 46808  	for i = 0; i < n; i++ {
 46809  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint64(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint64(unsafe.Sizeof(zSrc))-uint64(1))]
 46810  	}
 46811  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 46812  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 46813  }
 46814  
 46815  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31084))
 46816  
 46817  var test_destructor_count_var int32 = 0
 46818  
 46819  func destructor(tls *libc.TLS, p uintptr) {
 46820  	var zVal uintptr = p
 46821  
 46822  	zVal--
 46823  	sqlite3.Xsqlite3_free(tls, zVal)
 46824  	test_destructor_count_var--
 46825  }
 46826  
 46827  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46828  	var zVal uintptr
 46829  	var len int32
 46830  
 46831  	test_destructor_count_var++
 46832  
 46833  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 46834  		return
 46835  	}
 46836  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46837  	zVal = testContextMalloc(tls, pCtx, len+3)
 46838  	if !(zVal != 0) {
 46839  		return
 46840  	}
 46841  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+1))) = uint8(0)
 46842  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+2))) = uint8(0)
 46843  	zVal++
 46844  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 46845  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 46846  }
 46847  
 46848  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46849  	var zVal uintptr
 46850  	var len int32
 46851  
 46852  	test_destructor_count_var++
 46853  
 46854  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 46855  		return
 46856  	}
 46857  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46858  	zVal = testContextMalloc(tls, pCtx, len+3)
 46859  	if !(zVal != 0) {
 46860  		return
 46861  	}
 46862  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+1))) = uint8(0)
 46863  	*(*uint8)(unsafe.Pointer(zVal + uintptr(len+2))) = uint8(0)
 46864  	zVal++
 46865  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 46866  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 46867  }
 46868  
 46869  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46870  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 46871  }
 46872  
 46873  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 46874  }
 46875  
 46876  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 46877  	var z uintptr
 46878  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 46879  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 46880  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 46881  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 46882  }
 46883  
 46884  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 46885  	sqlite3.Xsqlite3_free(tls, p)
 46886  }
 46887  
 46888  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46889  	var i int32
 46890  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 46891  	if !(zRet != 0) {
 46892  		return
 46893  	}
 46894  	libc.Xmemset(tls, zRet, 0, uint64(nArg*2))
 46895  	for i = 0; i < nArg; i++ {
 46896  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 46897  		if z != 0 {
 46898  			var n int32
 46899  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 46900  			if zAux != 0 {
 46901  				*(*uint8)(unsafe.Pointer(zRet + uintptr(i*2))) = uint8('1')
 46902  
 46903  			} else {
 46904  				*(*uint8)(unsafe.Pointer(zRet + uintptr(i*2))) = uint8('0')
 46905  			}
 46906  			n = int32(libc.Xstrlen(tls, z)) + 1
 46907  			zAux = testContextMalloc(tls, pCtx, n)
 46908  			if zAux != 0 {
 46909  				libc.Xmemcpy(tls, zAux, z, uint64(n))
 46910  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 46911  			}
 46912  			*(*uint8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = uint8(' ')
 46913  		}
 46914  	}
 46915  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 46916  }
 46917  
 46918  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46919  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 46920  	if nArg == 2 {
 46921  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 46922  	}
 46923  }
 46924  
 46925  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46926  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 46927  	if pCounter == uintptr(0) {
 46928  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 46929  		if pCounter == uintptr(0) {
 46930  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46931  			return
 46932  		}
 46933  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46934  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46935  	} else {
 46936  		*(*int32)(unsafe.Pointer(pCounter))++
 46937  	}
 46938  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 46939  }
 46940  
 46941  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46942  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46943  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46944  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46945  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46946  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46947  }
 46948  
 46949  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46950  	bp := tls.Alloc(16)
 46951  	defer tls.Free(16)
 46952  
 46953  	var rc int32
 46954  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 46955  	var zSql uintptr
 46956  
 46957  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46958  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 46959  	if rc == SQLITE_OK {
 46960  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46961  		if rc == SQLITE_ROW {
 46962  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 46963  		}
 46964  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46965  	}
 46966  	if rc != 0 {
 46967  		var zErr uintptr
 46968  
 46969  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31163, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 46970  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46971  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 46972  	}
 46973  }
 46974  
 46975  func testHexChar(tls *libc.TLS, c uint8) int32 {
 46976  	if int32(c) >= '0' && int32(c) <= '9' {
 46977  		return int32(c) - '0'
 46978  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 46979  		return int32(c) - 'a' + 10
 46980  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 46981  		return int32(c) - 'A' + 10
 46982  	}
 46983  	return 0
 46984  }
 46985  
 46986  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 46987  	for *(*uint8)(unsafe.Pointer(zIn)) != 0 && *(*uint8)(unsafe.Pointer(zIn + 1)) != 0 {
 46988  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = uint8(testHexChar(tls, *(*uint8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*uint8)(unsafe.Pointer(zIn + 1))))
 46989  		zIn += uintptr(2)
 46990  	}
 46991  }
 46992  
 46993  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46994  	var n int32
 46995  	var zIn uintptr
 46996  	var zOut uintptr
 46997  
 46998  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46999  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47000  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 47001  	if zOut == uintptr(0) {
 47002  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47003  	} else {
 47004  		testHexToBin(tls, zIn, zOut)
 47005  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47006  	}
 47007  }
 47008  
 47009  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47010  	var n int32
 47011  	var zIn uintptr
 47012  	var zOut uintptr
 47013  
 47014  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47015  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47016  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 47017  	if zOut == uintptr(0) {
 47018  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47019  	} else {
 47020  		testHexToBin(tls, zIn, zOut)
 47021  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47022  	}
 47023  }
 47024  
 47025  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 47026  	var n int32
 47027  	var zIn uintptr
 47028  	var zOut uintptr
 47029  
 47030  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47031  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47032  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 47033  	if zOut == uintptr(0) {
 47034  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 47035  	} else {
 47036  		testHexToBin(tls, zIn, zOut)
 47037  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47038  	}
 47039  }
 47040  
 47041  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47042  	bp := tls.Alloc(28)
 47043  	defer tls.Free(28)
 47044  
 47045  	var i int32
 47046  	var bigEndian int32
 47047  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 47048  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 47049  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47050  	for i = 0; i < 8; i++ {
 47051  		if bigEndian != 0 {
 47052  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 47053  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 47054  		} else {
 47055  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 47056  			*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*uint8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 47057  		}
 47058  	}
 47059  	*(*uint8)(unsafe.Pointer(bp + 8 + 16)) = uint8(0)
 47060  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 47061  }
 47062  
 47063  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47064  	bp := tls.Alloc(72)
 47065  	defer tls.Free(72)
 47066  
 47067  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 47068  	var pRec uintptr
 47069  	var pEndHdr uintptr
 47070  	var pHdr uintptr
 47071  	var pBody uintptr
 47072  
 47073  	var iIdx int32
 47074  	var iCurrent int32 = 0
 47075  
 47076  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47077  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 47078  
 47079  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 47080  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 47081  
 47082  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 47083  		libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(Mem{})))
 47084  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 47085  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 47086  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+64))
 47087  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 64))), bp+8)
 47088  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 64)))))
 47089  
 47090  		if iCurrent == iIdx {
 47091  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 47092  		}
 47093  
 47094  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 47095  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 47096  		}
 47097  	}
 47098  }
 47099  
 47100  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47101  	bp := tls.Alloc(123)
 47102  	defer tls.Free(123)
 47103  
 47104  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 47105  	var pRec uintptr
 47106  	var pEndHdr uintptr
 47107  	var pHdr uintptr
 47108  	var pBody uintptr
 47109  
 47110  	var pRet uintptr
 47111  
 47112  	pRet = tcl.XTcl_NewObj(tls)
 47113  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 47114  
 47115  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47116  
 47117  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 47118  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 47119  	for pHdr < pEndHdr {
 47120  		var pVal uintptr = uintptr(0)
 47121  
 47122  		libc.Xmemset(tls, bp+40, 0, uint64(unsafe.Sizeof(Mem{})))
 47123  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 47124  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 47125  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+96))
 47126  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 96))), bp+40)
 47127  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 96)))))
 47128  
 47129  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 47130  		case SQLITE_TEXT:
 47131  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 47132  			break
 47133  
 47134  		case SQLITE_BLOB:
 47135  			{
 47136  				*(*[16]uint8)(unsafe.Pointer(bp + 107)) = [16]uint8{
 47137  					uint8('0'), uint8('1'), uint8('2'), uint8('3'), uint8('4'), uint8('5'), uint8('6'), uint8('7'),
 47138  					uint8('8'), uint8('9'), uint8('a'), uint8('b'), uint8('c'), uint8('d'), uint8('e'), uint8('f'),
 47139  				}
 47140  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 47141  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 47142  				var i int32
 47143  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 47144  				for i = 0; i < n; i++ {
 47145  					*(*uint8)(unsafe.Pointer(bp + 104)) = *(*uint8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 47146  					*(*uint8)(unsafe.Pointer(bp + 104 + 1)) = *(*uint8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 47147  					*(*uint8)(unsafe.Pointer(bp + 104 + 2)) = uint8(0)
 47148  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+104, 0))
 47149  				}
 47150  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 47151  				break
 47152  
 47153  			}
 47154  
 47155  		case SQLITE_FLOAT:
 47156  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 47157  			break
 47158  
 47159  		case SQLITE_INTEGER:
 47160  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 47161  			break
 47162  
 47163  		case SQLITE_NULL:
 47164  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 47165  			break
 47166  
 47167  		default:
 47168  		}
 47169  
 47170  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 47171  
 47172  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 47173  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 47174  		}
 47175  	}
 47176  
 47177  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 47178  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 47179  		var _objPtr uintptr = pRet
 47180  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 47181  			tcl.XTclFreeObj(tls, _objPtr)
 47182  		}
 47183  	}
 47184  }
 47185  
 47186  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47187  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 47188  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 47189  }
 47190  
 47191  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47192  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 47193  }
 47194  
 47195  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47196  	var m sqlite3_uint64 = uint64(0)
 47197  	var i int32
 47198  	for i = 0; i < argc && i < 63; i++ {
 47199  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) != 0 {
 47200  			m = m | uint64(1)<<i
 47201  		}
 47202  	}
 47203  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 47204  }
 47205  
 47206  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 47207  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 47208  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 47209  }
 47210  
 47211  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 47212  	var i int32
 47213  
 47214  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aFuncs))/uint64(unsafe.Sizeof(struct {
 47215  		FzName       uintptr
 47216  		FnArg        int8
 47217  		F__ccgo_pad1 [3]byte
 47218  		FeTextRep    uint32
 47219  		FxFunc       uintptr
 47220  	}{})); i++ {
 47221  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 47222  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 47223  	}
 47224  
 47225  	sqlite3.Xsqlite3_create_function(tls, db, ts+31211, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 47226  		*(*uintptr)(unsafe.Pointer(&struct {
 47227  			f func(*libc.TLS, uintptr, int32, uintptr)
 47228  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 47229  
 47230  	return SQLITE_OK
 47231  }
 47232  
 47233  var aFuncs = [20]struct {
 47234  	FzName       uintptr
 47235  	FnArg        int8
 47236  	F__ccgo_pad1 [3]byte
 47237  	FeTextRep    uint32
 47238  	FxFunc       uintptr
 47239  }{
 47240  	{FzName: ts + 31229, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47241  	{FzName: ts + 31237, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47242  	{FzName: ts + 31253, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47243  	{FzName: ts + 31271, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47244  	{FzName: ts + 31286, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47245  	{FzName: ts + 31301, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47246  	{FzName: ts + 31313, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47247  	{FzName: ts + 31335, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47248  	{FzName: ts + 31348, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47249  	{FzName: ts + 31348, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47250  	{FzName: ts + 31359, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47251  	{FzName: ts + 31369, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47252  	{FzName: ts + 31384, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47253  	{FzName: ts + 31397, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47254  	{FzName: ts + 31406, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47255  	{FzName: ts + 31418, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47256  	{FzName: ts + 31431, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 47257  	{FzName: ts + 31445, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47258  	{FzName: ts + 31461, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47259  	{FzName: ts + 31477, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47260  }
 47261  
 47262  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47263  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47264  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47265  	}{registerTestFunctions})))
 47266  	if rc == SQLITE_OK {
 47267  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47268  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47269  		}{Md5_Register})))
 47270  	}
 47271  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 47272  	return TCL_OK
 47273  }
 47274  
 47275  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 47276  }
 47277  
 47278  func tFinal(tls *libc.TLS, a uintptr) {
 47279  }
 47280  
 47281  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47282  	bp := tls.Alloc(24)
 47283  	defer tls.Free(24)
 47284  
 47285  	var rc int32
 47286  	var mxArg int32
 47287  
 47288  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0) {
 47289  		goto __1
 47290  	}
 47291  	return TCL_ERROR
 47292  __1:
 47293  	;
 47294  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47295  		f func(*libc.TLS, uintptr, int32, uintptr)
 47296  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 47297  		f func(*libc.TLS, uintptr, int32, uintptr)
 47298  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47299  	if !(rc != SQLITE_MISUSE) {
 47300  		goto __2
 47301  	}
 47302  	goto abuse_err
 47303  __2:
 47304  	;
 47305  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47306  		f func(*libc.TLS, uintptr, int32, uintptr)
 47307  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 47308  		f func(*libc.TLS, uintptr, int32, uintptr)
 47309  	}{tStep})), uintptr(0))
 47310  	if !(rc != SQLITE_MISUSE) {
 47311  		goto __3
 47312  	}
 47313  	goto abuse_err
 47314  __3:
 47315  	;
 47316  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47317  		f func(*libc.TLS, uintptr, int32, uintptr)
 47318  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47319  	if !(rc != SQLITE_MISUSE) {
 47320  		goto __4
 47321  	}
 47322  	goto abuse_err
 47323  __4:
 47324  	;
 47325  	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})))
 47326  	if !(rc != SQLITE_MISUSE) {
 47327  		goto __5
 47328  	}
 47329  	goto abuse_err
 47330  __5:
 47331  	;
 47332  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47333  		f func(*libc.TLS, uintptr, int32, uintptr)
 47334  	}{tStep})), uintptr(0))
 47335  	if !(rc != SQLITE_MISUSE) {
 47336  		goto __6
 47337  	}
 47338  	goto abuse_err
 47339  __6:
 47340  	;
 47341  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47342  		f func(*libc.TLS, uintptr, int32, uintptr)
 47343  	}{tStep})), uintptr(0), uintptr(0))
 47344  	if !(rc != SQLITE_MISUSE) {
 47345  		goto __7
 47346  	}
 47347  	goto abuse_err
 47348  __7:
 47349  	;
 47350  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47351  		f func(*libc.TLS, uintptr, int32, uintptr)
 47352  	}{tStep})), uintptr(0), uintptr(0))
 47353  	if !(rc != SQLITE_MISUSE) {
 47354  		goto __8
 47355  	}
 47356  	goto abuse_err
 47357  __8:
 47358  	;
 47359  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 47360  		ts+31494,
 47361  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47362  			f func(*libc.TLS, uintptr, int32, uintptr)
 47363  		}{tStep})), uintptr(0), uintptr(0))
 47364  	if !(rc != SQLITE_MISUSE) {
 47365  		goto __9
 47366  	}
 47367  	goto abuse_err
 47368  __9:
 47369  	;
 47370  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 47371  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 47372  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 47373  		ts+31751,
 47374  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47375  			f func(*libc.TLS, uintptr, int32, uintptr)
 47376  		}{tStep})), uintptr(0), uintptr(0))
 47377  	if !(rc != SQLITE_OK) {
 47378  		goto __10
 47379  	}
 47380  	goto abuse_err
 47381  __10:
 47382  	;
 47383  	return TCL_OK
 47384  
 47385  abuse_err:
 47386  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32007,
 47387  		uintptr(0)))
 47388  	return TCL_ERROR
 47389  }
 47390  
 47391  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 47392  	var aMatchinfo uintptr
 47393  	var nMatchinfo int32
 47394  	var nCol int32
 47395  	var nPhrase int32
 47396  	var iPhrase int32
 47397  	var score float64
 47398  	var nHitCount int32
 47399  	var nGlobalHitCount int32
 47400  	var weight float64
 47401  	var iCol int32
 47402  
 47403  	var aPhraseinfo uintptr
 47404  	nCol = 0
 47405  	nPhrase = 0
 47406  	score = 0.0
 47407  
 47408  	if !(nVal < 1) {
 47409  		goto __1
 47410  	}
 47411  	goto wrong_number_args
 47412  __1:
 47413  	;
 47414  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 47415  	nMatchinfo = int32(uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint64(unsafe.Sizeof(int32(0))))
 47416  	if !(nMatchinfo >= 2) {
 47417  		goto __2
 47418  	}
 47419  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 47420  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 47421  __2:
 47422  	;
 47423  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 47424  		goto __3
 47425  	}
 47426  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 47427  		ts+32050, -1)
 47428  	return
 47429  __3:
 47430  	;
 47431  	if !(nVal != 1+nCol) {
 47432  		goto __4
 47433  	}
 47434  	goto wrong_number_args
 47435  __4:
 47436  	;
 47437  	iPhrase = 0
 47438  __5:
 47439  	if !(iPhrase < nPhrase) {
 47440  		goto __7
 47441  	}
 47442  
 47443  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 47444  	iCol = 0
 47445  __8:
 47446  	if !(iCol < nCol) {
 47447  		goto __10
 47448  	}
 47449  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 47450  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 47451  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*8)))
 47452  	if !(nHitCount > 0) {
 47453  		goto __11
 47454  	}
 47455  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 47456  __11:
 47457  	;
 47458  	goto __9
 47459  __9:
 47460  	iCol++
 47461  	goto __8
 47462  	goto __10
 47463  __10:
 47464  	;
 47465  	goto __6
 47466  __6:
 47467  	iPhrase++
 47468  	goto __5
 47469  	goto __7
 47470  __7:
 47471  	;
 47472  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 47473  	return
 47474  
 47475  wrong_number_args:
 47476  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32099, -1)
 47477  }
 47478  
 47479  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47480  	bp := tls.Alloc(8)
 47481  	defer tls.Free(8)
 47482  
 47483  	if objc != 2 {
 47484  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47485  		return TCL_ERROR
 47486  	}
 47487  
 47488  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 47489  		return TCL_ERROR
 47490  	}
 47491  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32144, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47492  		f func(*libc.TLS, uintptr, int32, uintptr)
 47493  	}{rankfunc})), uintptr(0), uintptr(0))
 47494  	return TCL_OK
 47495  }
 47496  
 47497  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 47498  	var i int32
 47499  
 47500  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd7))/uint64(unsafe.Sizeof(struct {
 47501  		FzName uintptr
 47502  		FxProc uintptr
 47503  	}{})); i++ {
 47504  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 47505  	}
 47506  	sqlite3.Xsqlite3_initialize(tls)
 47507  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47508  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47509  	}{registerTestFunctions})))
 47510  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47511  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47512  	}{Md5_Register})))
 47513  	return TCL_OK
 47514  }
 47515  
 47516  var aObjCmd7 = [3]struct {
 47517  	FzName uintptr
 47518  	FxProc uintptr
 47519  }{
 47520  	{FzName: ts + 32149, FxProc: 0},
 47521  	{FzName: ts + 32176, FxProc: 0},
 47522  	{FzName: ts + 32198, FxProc: 0},
 47523  }
 47524  
 47525  type fd_set3 = struct{ Ffds_bits [16]int64 }
 47526  
 47527  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 47528  	bp := tls.Alloc(17)
 47529  	defer tls.Free(17)
 47530  
 47531  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32225))
 47532  	var i int32
 47533  	var j int32
 47534  	var c uint8
 47535  	i = N * 2
 47536  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 47537  	for j = N - 1; j >= 0; j-- {
 47538  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 47539  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 47540  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 47541  	}
 47542  
 47543  }
 47544  
 47545  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 47546  	bp := tls.Alloc(256)
 47547  	defer tls.Free(256)
 47548  
 47549  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 47550  		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),
 47551  		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),
 47552  		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),
 47553  		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),
 47554  		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),
 47555  		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),
 47556  		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),
 47557  		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),
 47558  		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),
 47559  		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),
 47560  		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),
 47561  		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),
 47562  		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),
 47563  		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),
 47564  		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),
 47565  		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),
 47566  	}
 47567  	var i int32
 47568  	var j int32
 47569  	var hi int32 = 1
 47570  	var c uint8
 47571  
 47572  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 47573  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 47574  		if int32(c) == 0 {
 47575  			continue
 47576  		}
 47577  		if hi != 0 {
 47578  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 47579  			hi = 0
 47580  		} else {
 47581  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 47582  			hi = 1
 47583  		}
 47584  	}
 47585  	return j
 47586  }
 47587  
 47588  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47589  	bp := tls.Alloc(48)
 47590  	defer tls.Free(48)
 47591  
 47592  	var got int32
 47593  	var zFile uintptr
 47594  	var zBuf uintptr
 47595  	var in uintptr
 47596  
 47597  	if objc != 4 {
 47598  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32242)
 47599  		return TCL_ERROR
 47600  	}
 47601  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 47602  		return TCL_ERROR
 47603  	}
 47604  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 47605  		return TCL_ERROR
 47606  	}
 47607  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 47608  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 47609  	if zBuf == uintptr(0) {
 47610  		return TCL_ERROR
 47611  	}
 47612  	in = libc.Xfopen(tls, zFile, ts+4402)
 47613  	if in == uintptr(0) {
 47614  		in = libc.Xfopen(tls, zFile, ts+32262)
 47615  	}
 47616  	if in == uintptr(0) {
 47617  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32264, zFile, 0))
 47618  		return TCL_ERROR
 47619  	}
 47620  	libc.Xfseek(tls, in, int64(*(*int32)(unsafe.Pointer(bp + 40))), SEEK_SET)
 47621  	got = int32(libc.Xfread(tls, zBuf, uint64(1), uint64(*(*int32)(unsafe.Pointer(bp + 44))), in))
 47622  	libc.Xfclose(tls, in)
 47623  	if got < 0 {
 47624  		got = 0
 47625  	}
 47626  	sqlite3TestBinToHex(tls, zBuf, got)
 47627  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 47628  	sqlite3.Xsqlite3_free(tls, zBuf)
 47629  	return TCL_OK
 47630  }
 47631  
 47632  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47633  	bp := tls.Alloc(32)
 47634  	defer tls.Free(32)
 47635  
 47636  	var nOut int32
 47637  	var written int32
 47638  	var zFile uintptr
 47639  	var zIn uintptr
 47640  	var aOut uintptr
 47641  	var out uintptr
 47642  
 47643  	if objc != 4 {
 47644  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32288)
 47645  		return TCL_ERROR
 47646  	}
 47647  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 47648  		return TCL_ERROR
 47649  	}
 47650  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 47651  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28)
 47652  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 47653  	if aOut == uintptr(0) {
 47654  		return TCL_ERROR
 47655  	}
 47656  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 47657  	out = libc.Xfopen(tls, zFile, ts+32312)
 47658  	if out == uintptr(0) {
 47659  		out = libc.Xfopen(tls, zFile, ts+32316)
 47660  	}
 47661  	if out == uintptr(0) {
 47662  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32319, zFile, 0))
 47663  		return TCL_ERROR
 47664  	}
 47665  	libc.Xfseek(tls, out, int64(*(*int32)(unsafe.Pointer(bp + 24))), SEEK_SET)
 47666  	written = int32(libc.Xfwrite(tls, aOut, uint64(1), uint64(nOut), out))
 47667  	sqlite3.Xsqlite3_free(tls, aOut)
 47668  	libc.Xfclose(tls, out)
 47669  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 47670  	return TCL_OK
 47671  }
 47672  
 47673  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47674  	bp := tls.Alloc(8)
 47675  	defer tls.Free(8)
 47676  
 47677  	var val int32
 47678  
 47679  	var nOut int32
 47680  	var zIn uintptr
 47681  	var aOut uintptr
 47682  
 47683  	if objc != 2 {
 47684  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32344)
 47685  		return TCL_ERROR
 47686  	}
 47687  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 47688  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 47689  	if aOut == uintptr(0) {
 47690  		return TCL_ERROR
 47691  	}
 47692  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 47693  	if nOut >= 4 {
 47694  		libc.Xmemcpy(tls, bp+4, aOut, uint64(4))
 47695  	} else {
 47696  		libc.Xmemset(tls, bp+4, 0, uint64(unsafe.Sizeof([4]uint8{})))
 47697  		libc.Xmemcpy(tls, bp+4+uintptr(4-nOut), aOut, uint64(nOut))
 47698  	}
 47699  	sqlite3.Xsqlite3_free(tls, aOut)
 47700  	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)))
 47701  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 47702  	return TCL_OK
 47703  }
 47704  
 47705  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47706  	bp := tls.Alloc(14)
 47707  	defer tls.Free(14)
 47708  
 47709  	if objc != 2 {
 47710  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 47711  		return TCL_ERROR
 47712  	}
 47713  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47714  		return TCL_ERROR
 47715  	}
 47716  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 47717  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 47718  	sqlite3TestBinToHex(tls, bp+4, 2)
 47719  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 47720  	return TCL_OK
 47721  }
 47722  
 47723  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47724  	bp := tls.Alloc(14)
 47725  	defer tls.Free(14)
 47726  
 47727  	if objc != 2 {
 47728  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 47729  		return TCL_ERROR
 47730  	}
 47731  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47732  		return TCL_ERROR
 47733  	}
 47734  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 47735  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 47736  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 47737  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 47738  	sqlite3TestBinToHex(tls, bp+4, 4)
 47739  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 47740  	return TCL_OK
 47741  }
 47742  
 47743  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47744  	bp := tls.Alloc(16)
 47745  	defer tls.Free(16)
 47746  
 47747  	tcl.XTcl_AppendResult(tls, interp,
 47748  		libc.VaList(bp, ts+32352, 0))
 47749  	return TCL_ERROR
 47750  }
 47751  
 47752  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 47753  	var q uintptr = p
 47754  	var x sqlite_uint64 = uint64(0)
 47755  	var y sqlite_uint64 = uint64(1)
 47756  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 47757  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 47758  		y <<= 7
 47759  	}
 47760  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 47761  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 47762  	return int32((int64(q) - int64(p)) / 1)
 47763  }
 47764  
 47765  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 47766  	var q uintptr = p
 47767  	var vu sqlite_uint64 = sqlite_uint64(v)
 47768  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 47769  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 47770  		vu >>= 7
 47771  	}
 47772  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 47773  
 47774  	return int32((int64(q) - int64(p)) / 1)
 47775  }
 47776  
 47777  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47778  	bp := tls.Alloc(16)
 47779  	defer tls.Free(16)
 47780  
 47781  	var zBlob uintptr
 47782  
 47783  	var nVal int32
 47784  
 47785  	if objc != 3 {
 47786  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32406)
 47787  		return TCL_ERROR
 47788  	}
 47789  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 47790  
 47791  	nVal = getFts3Varint(tls, zBlob, bp+8)
 47792  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 8))), 0)
 47793  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 47794  	return TCL_OK
 47795  }
 47796  
 47797  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47798  	bp := tls.Alloc(28)
 47799  	defer tls.Free(28)
 47800  
 47801  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 47802  	*(*int32)(unsafe.Pointer(bp)) = 0
 47803  	var aOut uintptr = uintptr(0)
 47804  	var nOut int32 = 0
 47805  	var nAlloc int32 = 0
 47806  	var i int32
 47807  
 47808  	if objc != 2 {
 47809  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32419)
 47810  		return TCL_ERROR
 47811  	}
 47812  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
 47813  		return TCL_ERROR
 47814  	}
 47815  
 47816  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 47817  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+16) {
 47818  			if nOut+10 > nAlloc {
 47819  				var nNew int32
 47820  				if nAlloc != 0 {
 47821  					nNew = nAlloc * 2
 47822  				} else {
 47823  					nNew = 128
 47824  				}
 47825  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 47826  				if aNew == uintptr(0) {
 47827  					sqlite3.Xsqlite3_free(tls, aOut)
 47828  					return TCL_ERROR
 47829  				}
 47830  				aOut = aNew
 47831  				nAlloc = nNew
 47832  			}
 47833  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 47834  		} else {
 47835  			*(*int32)(unsafe.Pointer(bp + 24)) = 0
 47836  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+24)
 47837  			for nOut+*(*int32)(unsafe.Pointer(bp + 24)) > nAlloc {
 47838  				var nNew int32
 47839  				if nAlloc != 0 {
 47840  					nNew = nAlloc * 2
 47841  				} else {
 47842  					nNew = 128
 47843  				}
 47844  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 47845  				if aNew == uintptr(0) {
 47846  					sqlite3.Xsqlite3_free(tls, aOut)
 47847  					return TCL_ERROR
 47848  				}
 47849  				aOut = aNew
 47850  				nAlloc = nNew
 47851  			}
 47852  			libc.Xmemcpy(tls, aOut+uintptr(nOut), zVal, uint64(*(*int32)(unsafe.Pointer(bp + 24))))
 47853  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 24))
 47854  		}
 47855  	}
 47856  
 47857  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 47858  	sqlite3.Xsqlite3_free(tls, aOut)
 47859  	return TCL_OK
 47860  }
 47861  
 47862  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 47863  	var i int32
 47864  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd8))/uint64(unsafe.Sizeof(struct {
 47865  		FzName uintptr
 47866  		FxProc uintptr
 47867  	}{})); i++ {
 47868  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 47869  	}
 47870  	return TCL_OK
 47871  }
 47872  
 47873  var aObjCmd8 = [8]struct {
 47874  	FzName uintptr
 47875  	FxProc uintptr
 47876  }{
 47877  	{FzName: ts + 32424, FxProc: 0},
 47878  	{FzName: ts + 32435, FxProc: 0},
 47879  	{FzName: ts + 32447, FxProc: 0},
 47880  	{FzName: ts + 32461, FxProc: 0},
 47881  	{FzName: ts + 32480, FxProc: 0},
 47882  	{FzName: ts + 32499, FxProc: 0},
 47883  	{FzName: ts + 32512, FxProc: 0},
 47884  	{FzName: ts + 32528, FxProc: 0},
 47885  }
 47886  
 47887  type Wrapped = struct {
 47888  	Fpcache      sqlite3_pcache_methods2
 47889  	Fmem         sqlite3_mem_methods
 47890  	Fmutex       sqlite3_mutex_methods
 47891  	Fmem_init    int32
 47892  	Fmem_fail    int32
 47893  	Fmutex_init  int32
 47894  	Fmutex_fail  int32
 47895  	Fpcache_init int32
 47896  	Fpcache_fail int32
 47897  }
 47898  
 47899  var wrapped Wrapped
 47900  
 47901  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 47902  	var rc int32
 47903  	if wrapped.Fmem_fail != 0 {
 47904  		rc = SQLITE_ERROR
 47905  	} else {
 47906  		rc = (*struct {
 47907  			f func(*libc.TLS, uintptr) int32
 47908  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 47909  	}
 47910  	if rc == SQLITE_OK {
 47911  		wrapped.Fmem_init = 1
 47912  	}
 47913  	return rc
 47914  }
 47915  
 47916  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 47917  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 47918  	wrapped.Fmem_init = 0
 47919  }
 47920  
 47921  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 47922  	return (*struct {
 47923  		f func(*libc.TLS, int32) uintptr
 47924  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 47925  }
 47926  
 47927  func wrMemFree(tls *libc.TLS, p uintptr) {
 47928  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 47929  }
 47930  
 47931  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 47932  	return (*struct {
 47933  		f func(*libc.TLS, uintptr, int32) uintptr
 47934  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 47935  }
 47936  
 47937  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 47938  	return (*struct {
 47939  		f func(*libc.TLS, uintptr) int32
 47940  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 47941  }
 47942  
 47943  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 47944  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 47945  }
 47946  
 47947  func wrMutexInit(tls *libc.TLS) int32 {
 47948  	var rc int32
 47949  	if wrapped.Fmutex_fail != 0 {
 47950  		rc = SQLITE_ERROR
 47951  	} else {
 47952  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 47953  	}
 47954  	if rc == SQLITE_OK {
 47955  		wrapped.Fmutex_init = 1
 47956  	}
 47957  	return rc
 47958  }
 47959  
 47960  func wrMutexEnd(tls *libc.TLS) int32 {
 47961  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 47962  	wrapped.Fmutex_init = 0
 47963  	return SQLITE_OK
 47964  }
 47965  
 47966  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 47967  	return (*struct {
 47968  		f func(*libc.TLS, int32) uintptr
 47969  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 47970  }
 47971  
 47972  func wrMutexFree(tls *libc.TLS, p uintptr) {
 47973  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 47974  }
 47975  
 47976  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 47977  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 47978  }
 47979  
 47980  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 47981  	return (*struct {
 47982  		f func(*libc.TLS, uintptr) int32
 47983  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 47984  }
 47985  
 47986  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 47987  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 47988  }
 47989  
 47990  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 47991  	return (*struct {
 47992  		f func(*libc.TLS, uintptr) int32
 47993  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 47994  }
 47995  
 47996  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 47997  	return (*struct {
 47998  		f func(*libc.TLS, uintptr) int32
 47999  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 48000  }
 48001  
 48002  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 48003  	var rc int32
 48004  	if wrapped.Fpcache_fail != 0 {
 48005  		rc = SQLITE_ERROR
 48006  	} else {
 48007  		rc = (*struct {
 48008  			f func(*libc.TLS, uintptr) int32
 48009  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 48010  	}
 48011  	if rc == SQLITE_OK {
 48012  		wrapped.Fpcache_init = 1
 48013  	}
 48014  	return rc
 48015  }
 48016  
 48017  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 48018  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 48019  	wrapped.Fpcache_init = 0
 48020  }
 48021  
 48022  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 48023  	return (*struct {
 48024  		f func(*libc.TLS, int32, int32, int32) uintptr
 48025  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 48026  }
 48027  
 48028  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 48029  	(*struct {
 48030  		f func(*libc.TLS, uintptr, int32)
 48031  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 48032  }
 48033  
 48034  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 48035  	return (*struct {
 48036  		f func(*libc.TLS, uintptr) int32
 48037  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 48038  }
 48039  
 48040  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 48041  	return (*struct {
 48042  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 48043  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 48044  }
 48045  
 48046  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 48047  	(*struct {
 48048  		f func(*libc.TLS, uintptr, uintptr, int32)
 48049  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 48050  }
 48051  
 48052  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 48053  	(*struct {
 48054  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 48055  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 48056  }
 48057  
 48058  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 48059  	(*struct {
 48060  		f func(*libc.TLS, uintptr, uint32)
 48061  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 48062  }
 48063  
 48064  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 48065  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 48066  }
 48067  
 48068  func installInitWrappers(tls *libc.TLS) {
 48069  	bp := tls.Alloc(288)
 48070  	defer tls.Free(288)
 48071  
 48072  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 48073  		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 {
 48074  			f func(*libc.TLS, int32) uintptr
 48075  		}{wrMutexAlloc})),
 48076  		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 {
 48077  			f func(*libc.TLS, uintptr) int32
 48078  		}{wrMutexTry})),
 48079  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 48080  			f func(*libc.TLS, uintptr) int32
 48081  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 48082  			f func(*libc.TLS, uintptr) int32
 48083  		}{wrMutexNotheld})),
 48084  	}
 48085  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 184)) = sqlite3_pcache_methods2{
 48086  		FiVersion: 1,
 48087  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 48088  			f func(*libc.TLS, uintptr) int32
 48089  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 48090  			f func(*libc.TLS, int32, int32, int32) uintptr
 48091  		}{wrPCacheCreate})),
 48092  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 48093  			f func(*libc.TLS, uintptr, int32)
 48094  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 48095  			f func(*libc.TLS, uintptr) int32
 48096  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 48097  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 48098  		}{wrPCacheFetch})),
 48099  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 48100  			f func(*libc.TLS, uintptr, uintptr, int32)
 48101  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 48102  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 48103  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 48104  			f func(*libc.TLS, uintptr, uint32)
 48105  		}{wrPCacheTruncate})),
 48106  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 48107  	}
 48108  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 120)) = sqlite3_mem_methods{
 48109  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 48110  			f func(*libc.TLS, int32) uintptr
 48111  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 48112  			f func(*libc.TLS, uintptr, int32) uintptr
 48113  		}{wrMemRealloc})),
 48114  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 48115  			f func(*libc.TLS, uintptr) int32
 48116  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 48117  			f func(*libc.TLS, uintptr) int32
 48118  		}{wrMemInit})),
 48119  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 48120  	}
 48121  
 48122  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint64(unsafe.Sizeof(wrapped)))
 48123  
 48124  	sqlite3.Xsqlite3_shutdown(tls)
 48125  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 48126  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 48127  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 48128  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 48129  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+120))
 48130  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+184))
 48131  }
 48132  
 48133  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48134  	bp := tls.Alloc(24)
 48135  	defer tls.Free(24)
 48136  
 48137  	var i int32
 48138  	installInitWrappers(tls)
 48139  	for i = 1; i < objc; i++ {
 48140  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 48141  		if libc.Xstrcmp(tls, z, ts+32544) == 0 {
 48142  			wrapped.Fmem_fail = 1
 48143  		} else if libc.Xstrcmp(tls, z, ts+29150) == 0 {
 48144  			wrapped.Fmutex_fail = 1
 48145  		} else if libc.Xstrcmp(tls, z, ts+32548) == 0 {
 48146  			wrapped.Fpcache_fail = 1
 48147  		} else {
 48148  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32555, z, ts+11945))
 48149  			return TCL_ERROR
 48150  		}
 48151  	}
 48152  	return TCL_OK
 48153  }
 48154  
 48155  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48156  	bp := tls.Alloc(24)
 48157  	defer tls.Free(24)
 48158  
 48159  	if objc != 1 {
 48160  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48161  		return TCL_ERROR
 48162  	}
 48163  
 48164  	sqlite3.Xsqlite3_shutdown(tls)
 48165  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 48166  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 48167  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 48168  	return TCL_OK
 48169  }
 48170  
 48171  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48172  	if objc != 1 {
 48173  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48174  		return TCL_ERROR
 48175  	}
 48176  
 48177  	wrapped.Fmem_fail = 0
 48178  	wrapped.Fmutex_fail = 0
 48179  	wrapped.Fpcache_fail = 0
 48180  	return TCL_OK
 48181  }
 48182  
 48183  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48184  	var pRet uintptr
 48185  
 48186  	if objc != 1 {
 48187  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48188  		return TCL_ERROR
 48189  	}
 48190  
 48191  	pRet = tcl.XTcl_NewObj(tls)
 48192  	if wrapped.Fmutex_init != 0 {
 48193  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29150, -1))
 48194  	}
 48195  	if wrapped.Fmem_init != 0 {
 48196  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32544, -1))
 48197  	}
 48198  	if wrapped.Fpcache_init != 0 {
 48199  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32548, -1))
 48200  	}
 48201  
 48202  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 48203  	return TCL_OK
 48204  }
 48205  
 48206  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 48207  	var i int32
 48208  
 48209  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd9))/uint64(unsafe.Sizeof(struct {
 48210  		FzName uintptr
 48211  		FxProc uintptr
 48212  	}{})); i++ {
 48213  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 48214  	}
 48215  
 48216  	return TCL_OK
 48217  }
 48218  
 48219  var aObjCmd9 = [4]struct {
 48220  	FzName uintptr
 48221  	FxProc uintptr
 48222  }{
 48223  	{FzName: ts + 32575, FxProc: 0},
 48224  	{FzName: ts + 32596, FxProc: 0},
 48225  	{FzName: ts + 32615, FxProc: 0},
 48226  	{FzName: ts + 32638, FxProc: 0},
 48227  }
 48228  
 48229  type sqlite3_intarray1 = struct {
 48230  	Fn           int32
 48231  	F__ccgo_pad1 [4]byte
 48232  	Fa           uintptr
 48233  	FxFree       uintptr
 48234  }
 48235  
 48236  type sqlite3_intarray = sqlite3_intarray1
 48237  
 48238  type intarray_vtab1 = struct {
 48239  	Fbase     sqlite3_vtab
 48240  	FpContent uintptr
 48241  }
 48242  
 48243  type intarray_vtab = intarray_vtab1
 48244  type intarray_cursor1 = struct {
 48245  	Fbase        sqlite3_vtab_cursor
 48246  	Fi           int32
 48247  	F__ccgo_pad1 [4]byte
 48248  }
 48249  
 48250  type intarray_cursor = intarray_cursor1
 48251  
 48252  func intarrayFree(tls *libc.TLS, p uintptr) {
 48253  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 48254  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 48255  	}
 48256  	sqlite3.Xsqlite3_free(tls, p)
 48257  }
 48258  
 48259  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 48260  	var pVtab uintptr = p
 48261  	sqlite3.Xsqlite3_free(tls, pVtab)
 48262  	return 0
 48263  }
 48264  
 48265  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 48266  	var rc int32 = SQLITE_NOMEM
 48267  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 48268  
 48269  	if pVtab != 0 {
 48270  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(intarray_vtab{})))
 48271  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 48272  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32657)
 48273  	}
 48274  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 48275  	return rc
 48276  }
 48277  
 48278  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 48279  	var rc int32 = SQLITE_NOMEM
 48280  	var pCur uintptr
 48281  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 48282  	if pCur != 0 {
 48283  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(intarray_cursor{})))
 48284  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 48285  		rc = SQLITE_OK
 48286  	}
 48287  	return rc
 48288  }
 48289  
 48290  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 48291  	var pCur uintptr = cur
 48292  	sqlite3.Xsqlite3_free(tls, pCur)
 48293  	return SQLITE_OK
 48294  }
 48295  
 48296  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 48297  	var pCur uintptr = cur
 48298  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 48299  	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 {
 48300  		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)))
 48301  	}
 48302  	return SQLITE_OK
 48303  }
 48304  
 48305  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 48306  	var pCur uintptr = cur
 48307  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 48308  	return SQLITE_OK
 48309  }
 48310  
 48311  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 48312  	var pCur uintptr = cur
 48313  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 48314  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 48315  }
 48316  
 48317  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 48318  	var pCur uintptr = cur
 48319  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 48320  	return SQLITE_OK
 48321  }
 48322  
 48323  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 48324  	var pCur uintptr = pVtabCursor
 48325  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 48326  	return SQLITE_OK
 48327  }
 48328  
 48329  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 48330  	return SQLITE_OK
 48331  }
 48332  
 48333  var intarrayModule = sqlite3_module{
 48334  	FxCreate:     0,
 48335  	FxConnect:    0,
 48336  	FxBestIndex:  0,
 48337  	FxDisconnect: 0,
 48338  	FxDestroy:    0,
 48339  	FxOpen:       0,
 48340  	FxClose:      0,
 48341  	FxFilter:     0,
 48342  	FxNext:       0,
 48343  	FxEof:        0,
 48344  	FxColumn:     0,
 48345  	FxRowid:      0,
 48346  }
 48347  
 48348  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 48349  	bp := tls.Alloc(16)
 48350  	defer tls.Free(16)
 48351  
 48352  	var rc int32 = SQLITE_OK
 48353  	var p uintptr
 48354  
 48355  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 48356  	if p == uintptr(0) {
 48357  		return SQLITE_NOMEM
 48358  	}
 48359  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(sqlite3_intarray{})))
 48360  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 48361  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 48362  	if rc == SQLITE_OK {
 48363  		var zSql uintptr
 48364  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32699,
 48365  			libc.VaList(bp, zName, zName))
 48366  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 48367  		sqlite3.Xsqlite3_free(tls, zSql)
 48368  	}
 48369  	return rc
 48370  }
 48371  
 48372  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 48373  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 48374  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 48375  	}
 48376  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 48377  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 48378  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 48379  	return SQLITE_OK
 48380  }
 48381  
 48382  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48383  	bp := tls.Alloc(148)
 48384  	defer tls.Free(148)
 48385  
 48386  	var zName uintptr
 48387  
 48388  	var rc int32 = SQLITE_OK
 48389  
 48390  	if objc != 3 {
 48391  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 48392  		return TCL_ERROR
 48393  	}
 48394  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 48395  		return TCL_ERROR
 48396  	}
 48397  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 48398  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+40)
 48399  	if rc != SQLITE_OK {
 48400  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48401  		return TCL_ERROR
 48402  	}
 48403  	sqlite3TestMakePointerStr(tls, interp, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
 48404  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+48, uintptr(0)))
 48405  	return TCL_OK
 48406  }
 48407  
 48408  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48409  	bp := tls.Alloc(40)
 48410  	defer tls.Free(40)
 48411  
 48412  	var pArray uintptr
 48413  	var rc int32 = SQLITE_OK
 48414  	var i int32
 48415  	var n int32
 48416  	var a uintptr
 48417  
 48418  	if objc < 2 {
 48419  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32737)
 48420  		return TCL_ERROR
 48421  	}
 48422  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 48423  	n = objc - 2
 48424  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(n))
 48425  	if a == uintptr(0) {
 48426  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32746, uintptr(0)))
 48427  		return TCL_ERROR
 48428  	}
 48429  	for i = 0; i < n; i++ {
 48430  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 48431  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*8)), bp+32)
 48432  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 48433  	}
 48434  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 48435  	if rc != SQLITE_OK {
 48436  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48437  		return TCL_ERROR
 48438  	}
 48439  	return TCL_OK
 48440  }
 48441  
 48442  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 48443  	var i int32
 48444  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd10))/uint64(unsafe.Sizeof(struct {
 48445  		FzName      uintptr
 48446  		FxProc      uintptr
 48447  		FclientData uintptr
 48448  	}{})); i++ {
 48449  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 48450  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 48451  	}
 48452  	return TCL_OK
 48453  }
 48454  
 48455  var aObjCmd10 = [2]struct {
 48456  	FzName      uintptr
 48457  	FxProc      uintptr
 48458  	FclientData uintptr
 48459  }{
 48460  	{FzName: ts + 32759, FxProc: 0},
 48461  	{FzName: ts + 32783, FxProc: 0},
 48462  }
 48463  
 48464  type jt_file1 = struct {
 48465  	Fbase        sqlite3_file
 48466  	FzName       uintptr
 48467  	Fflags       int32
 48468  	FeLock       int32
 48469  	FnPage       u32
 48470  	FnPagesize   u32
 48471  	FpWritable   uintptr
 48472  	FaCksum      uintptr
 48473  	FnSync       int32
 48474  	F__ccgo_pad1 [4]byte
 48475  	FiMaxOff     sqlite3_int64
 48476  	FpNext       uintptr
 48477  	FpReal       uintptr
 48478  }
 48479  
 48480  type jt_file = jt_file1
 48481  
 48482  var jt_vfs = sqlite3_vfs{
 48483  	FiVersion:          2,
 48484  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 48485  	FmxPathname:        JT_MAX_PATHNAME,
 48486  	FzName:             ts + 32805,
 48487  	FxOpen:             0,
 48488  	FxDelete:           0,
 48489  	FxAccess:           0,
 48490  	FxFullPathname:     0,
 48491  	FxDlOpen:           0,
 48492  	FxDlError:          0,
 48493  	FxDlSym:            0,
 48494  	FxDlClose:          0,
 48495  	FxRandomness:       0,
 48496  	FxSleep:            0,
 48497  	FxCurrentTime:      0,
 48498  	FxGetLastError:     0,
 48499  	FxCurrentTimeInt64: 0,
 48500  }
 48501  
 48502  var jt_io_methods = sqlite3_io_methods{
 48503  	FiVersion:               1,
 48504  	FxClose:                 0,
 48505  	FxRead:                  0,
 48506  	FxWrite:                 0,
 48507  	FxTruncate:              0,
 48508  	FxSync:                  0,
 48509  	FxFileSize:              0,
 48510  	FxLock:                  0,
 48511  	FxUnlock:                0,
 48512  	FxCheckReservedLock:     0,
 48513  	FxFileControl:           0,
 48514  	FxSectorSize:            0,
 48515  	FxDeviceCharacteristics: 0,
 48516  }
 48517  
 48518  type JtGlobal = struct {
 48519  	FpVfs  uintptr
 48520  	FpList uintptr
 48521  }
 48522  
 48523  var g2 = JtGlobal{}
 48524  
 48525  func enterJtMutex(tls *libc.TLS) {
 48526  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48527  }
 48528  
 48529  func leaveJtMutex(tls *libc.TLS) {
 48530  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48531  }
 48532  
 48533  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 48534  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 48535  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 48536  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 48537  	sqlite3.Xsqlite3_io_error_hit = 0
 48538  }
 48539  
 48540  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 48541  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 48542  	sqlite3.Xsqlite3_io_error_hit = iSave2
 48543  }
 48544  
 48545  func closeTransaction(tls *libc.TLS, p uintptr) {
 48546  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 48547  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 48548  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48549  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48550  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 48551  }
 48552  
 48553  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 48554  	var pp uintptr
 48555  	var p uintptr = pFile
 48556  
 48557  	closeTransaction(tls, p)
 48558  	enterJtMutex(tls)
 48559  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 48560  		for pp = uintptr(unsafe.Pointer(&g2)) + 8; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 48561  		}
 48562  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 48563  	}
 48564  	leaveJtMutex(tls)
 48565  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48566  	return SQLITE_OK
 48567  }
 48568  
 48569  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48570  	var p uintptr = pFile
 48571  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48572  }
 48573  
 48574  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 48575  	var pMain uintptr = uintptr(0)
 48576  	enterJtMutex(tls)
 48577  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 48578  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32808))
 48579  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 48580  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 48581  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint64(nName)) &&
 48582  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 48583  			break
 48584  		}
 48585  	}
 48586  	leaveJtMutex(tls)
 48587  	return pMain
 48588  }
 48589  
 48590  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 48591  	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))))
 48592  }
 48593  
 48594  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 48595  	var i int32
 48596  	var cksum u32 = u32(0)
 48597  	for i = 0; i < n; i++ {
 48598  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 48599  	}
 48600  	return cksum
 48601  }
 48602  
 48603  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 48604  	bp := tls.Alloc(8)
 48605  	defer tls.Free(8)
 48606  
 48607  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 48608  	if libc.Xmemcmp(tls, bp, zBuf, uint64(8)) != 0 {
 48609  		return SQLITE_ERROR
 48610  	}
 48611  	if pnRec != 0 {
 48612  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 48613  	}
 48614  	if pnPage != 0 {
 48615  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 48616  	}
 48617  	if pnSector != 0 {
 48618  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 48619  	}
 48620  	if pnPagesize != 0 {
 48621  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 48622  	}
 48623  	return SQLITE_OK
 48624  }
 48625  
 48626  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 48627  	bp := tls.Alloc(8)
 48628  	defer tls.Free(8)
 48629  
 48630  	var aData uintptr
 48631  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 48632  	var rc int32 = SQLITE_OK
 48633  
 48634  	closeTransaction(tls, pMain)
 48635  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48636  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 48637  	(*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))))
 48638  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 48639  
 48640  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 48641  		rc = SQLITE_IOERR | int32(12)<<8
 48642  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 48643  		var iTrunk u32
 48644  
 48645  		stop_ioerr_simulation(tls, bp, bp+4)
 48646  
 48647  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 48648  		if rc == SQLITE_OK {
 48649  			var nDbsize u32 = decodeUint32(tls, aData+28)
 48650  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint64(4)) == 0 {
 48651  				var iPg u32
 48652  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 48653  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 48654  				}
 48655  			}
 48656  		}
 48657  		iTrunk = decodeUint32(tls, aData+32)
 48658  		for rc == SQLITE_OK && iTrunk > u32(0) {
 48659  			var nLeaf u32
 48660  			var iLeaf u32
 48661  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48662  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48663  			nLeaf = decodeUint32(tls, aData+4)
 48664  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 48665  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 48666  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48667  			}
 48668  			iTrunk = decodeUint32(tls, aData)
 48669  		}
 48670  
 48671  		if rc == SQLITE_OK {
 48672  			var ii int32
 48673  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 48674  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 48675  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 48676  					continue
 48677  				}
 48678  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48679  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48680  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 48681  					rc = SQLITE_OK
 48682  				}
 48683  			}
 48684  		}
 48685  
 48686  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 48687  	}
 48688  
 48689  	sqlite3.Xsqlite3_free(tls, aData)
 48690  	return rc
 48691  }
 48692  
 48693  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 48694  	bp := tls.Alloc(52)
 48695  	defer tls.Free(52)
 48696  
 48697  	var rc int32
 48698  
 48699  	var pReal uintptr
 48700  	var iOff sqlite3_int64
 48701  	var iSize sqlite3_int64
 48702  	var aPage uintptr
 48703  
 48704  	var cksum u32
 48705  	_ = cksum
 48706  	var pgno u32
 48707  
 48708  	var ii u32
 48709  	rc = SQLITE_OK
 48710  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 48711  	iOff = int64(0)
 48712  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 48713  
 48714  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48715  	if !!(aPage != 0) {
 48716  		goto __1
 48717  	}
 48718  	return SQLITE_IOERR | int32(12)<<8
 48719  __1:
 48720  	;
 48721  	stop_ioerr_simulation(tls, bp, bp+4)
 48722  
 48723  __2:
 48724  	if !(rc == SQLITE_OK && iOff < iSize) {
 48725  		goto __3
 48726  	}
 48727  
 48728  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 48729  	if !(rc != SQLITE_OK ||
 48730  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 48731  		goto __4
 48732  	}
 48733  	goto finish_rjf
 48734  __4:
 48735  	;
 48736  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 48737  
 48738  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 48739  		goto __5
 48740  	}
 48741  
 48742  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 48743  		goto __6
 48744  	}
 48745  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 48746  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 48747  		goto __7
 48748  	}
 48749  	goto __2
 48750  __7:
 48751  	;
 48752  __6:
 48753  	;
 48754  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 48755  __5:
 48756  	;
 48757  	ii = u32(0)
 48758  __8:
 48759  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 48760  		goto __10
 48761  	}
 48762  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 48763  	if !(rc == SQLITE_OK) {
 48764  		goto __11
 48765  	}
 48766  	pgno = decodeUint32(tls, bp+8)
 48767  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 48768  		goto __12
 48769  	}
 48770  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 48771  		goto __13
 48772  	}
 48773  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 48774  	if !(rc == SQLITE_OK) {
 48775  		goto __14
 48776  	}
 48777  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48778  
 48779  __14:
 48780  	;
 48781  __13:
 48782  	;
 48783  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48784  __12:
 48785  	;
 48786  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48787  __11:
 48788  	;
 48789  	goto __9
 48790  __9:
 48791  	ii++
 48792  	goto __8
 48793  	goto __10
 48794  __10:
 48795  	;
 48796  	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)))
 48797  	goto __2
 48798  __3:
 48799  	;
 48800  finish_rjf:
 48801  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 48802  	sqlite3.Xsqlite3_free(tls, aPage)
 48803  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 48804  		goto __15
 48805  	}
 48806  	rc = SQLITE_OK
 48807  __15:
 48808  	;
 48809  	return rc
 48810  }
 48811  
 48812  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48813  	var rc int32
 48814  	var p uintptr = pFile
 48815  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48816  		if iOfst == int64(0) {
 48817  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48818  
 48819  			if iAmt == 28 {
 48820  				closeTransaction(tls, pMain)
 48821  			} else if iAmt != 12 {
 48822  				var z uintptr = zBuf
 48823  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 48824  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 48825  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 48826  					return rc
 48827  				}
 48828  			}
 48829  		}
 48830  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 48831  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 48832  		}
 48833  	}
 48834  
 48835  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 48836  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 48837  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 48838  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 48839  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 48840  		} else {
 48841  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 48842  			_ = pgno
 48843  
 48844  		}
 48845  	}
 48846  
 48847  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48848  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 48849  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48850  		var rc2 int32 = readJournalFile(tls, p, pMain)
 48851  		if rc == SQLITE_OK {
 48852  			rc = rc2
 48853  		}
 48854  	}
 48855  	return rc
 48856  }
 48857  
 48858  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 48859  	var p uintptr = pFile
 48860  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 48861  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48862  		closeTransaction(tls, pMain)
 48863  	}
 48864  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 48865  		var pgno u32
 48866  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 48867  		_ = locking_page
 48868  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 48869  		}
 48870  	}
 48871  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 48872  }
 48873  
 48874  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 48875  	var p uintptr = pFile
 48876  
 48877  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48878  		var rc int32
 48879  		var pMain uintptr
 48880  
 48881  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48882  
 48883  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 48884  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 48885  			rc = readJournalFile(tls, p, pMain)
 48886  			if rc != SQLITE_OK {
 48887  				return rc
 48888  			}
 48889  		}
 48890  	}
 48891  
 48892  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 48893  }
 48894  
 48895  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 48896  	var p uintptr = pFile
 48897  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 48898  }
 48899  
 48900  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48901  	var rc int32
 48902  	var p uintptr = pFile
 48903  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 48904  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 48905  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 48906  	}
 48907  	return rc
 48908  }
 48909  
 48910  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48911  	var rc int32
 48912  	var p uintptr = pFile
 48913  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 48914  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 48915  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 48916  	}
 48917  	return rc
 48918  }
 48919  
 48920  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 48921  	var p uintptr = pFile
 48922  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 48923  }
 48924  
 48925  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 48926  	var p uintptr = pFile
 48927  	return (*struct {
 48928  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48929  	})(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)
 48930  }
 48931  
 48932  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 48933  	var p uintptr = pFile
 48934  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48935  }
 48936  
 48937  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48938  	var p uintptr = pFile
 48939  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48940  }
 48941  
 48942  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48943  	var rc int32
 48944  	var p uintptr = pFile
 48945  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 48946  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*80
 48947  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 48948  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 48949  
 48950  	if rc == SQLITE_OK {
 48951  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 48952  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 48953  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 48954  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 48955  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 48956  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48957  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48958  		enterJtMutex(tls)
 48959  		if zName != 0 {
 48960  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 48961  			g2.FpList = p
 48962  		}
 48963  		leaveJtMutex(tls)
 48964  	}
 48965  	return rc
 48966  }
 48967  
 48968  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48969  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 48970  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nPath-8)) {
 48971  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 48972  		if pMain != 0 {
 48973  			closeTransaction(tls, pMain)
 48974  		}
 48975  	}
 48976  
 48977  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 48978  }
 48979  
 48980  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48981  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 48982  }
 48983  
 48984  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 48985  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 48986  }
 48987  
 48988  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 48989  	return (*struct {
 48990  		f func(*libc.TLS, uintptr, uintptr) uintptr
 48991  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 48992  }
 48993  
 48994  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 48995  	(*struct {
 48996  		f func(*libc.TLS, uintptr, int32, uintptr)
 48997  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 48998  }
 48999  
 49000  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 49001  	return (*struct {
 49002  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 49003  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 49004  }
 49005  
 49006  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 49007  	(*struct {
 49008  		f func(*libc.TLS, uintptr, uintptr)
 49009  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 49010  }
 49011  
 49012  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 49013  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 49014  }
 49015  
 49016  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 49017  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 49018  }
 49019  
 49020  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 49021  	return (*struct {
 49022  		f func(*libc.TLS, uintptr, uintptr) int32
 49023  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 49024  }
 49025  
 49026  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 49027  	return (*struct {
 49028  		f func(*libc.TLS, uintptr, uintptr) int32
 49029  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 49030  }
 49031  
 49032  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 49033  	return (*struct {
 49034  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 49035  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 49036  }
 49037  
 49038  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 49039  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 49040  	if g2.FpVfs == uintptr(0) {
 49041  		return SQLITE_ERROR
 49042  	}
 49043  	jt_vfs.FszOsFile = int32(uint64(unsafe.Sizeof(jt_file{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 49044  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 49045  		jt_vfs.FiVersion = 1
 49046  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 49047  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 49048  	}
 49049  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 49050  	return SQLITE_OK
 49051  }
 49052  
 49053  func jt_unregister(tls *libc.TLS) {
 49054  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 49055  }
 49056  
 49057  type MemFault = struct {
 49058  	FiCountdown   int32
 49059  	FnRepeat      int32
 49060  	FnBenign      int32
 49061  	FnFail        int32
 49062  	FnOkBefore    int32
 49063  	FnOkAfter     int32
 49064  	Fenable       u8
 49065  	F__ccgo_pad1  [3]byte
 49066  	FisInstalled  int32
 49067  	FisBenignMode int32
 49068  	F__ccgo_pad2  [4]byte
 49069  	Fm            sqlite3_mem_methods
 49070  }
 49071  
 49072  var memfault MemFault
 49073  
 49074  func sqlite3Fault(tls *libc.TLS) {
 49075  	cnt1++
 49076  }
 49077  
 49078  var cnt1 int32 = 0
 49079  
 49080  func sqlite3FirstFault(tls *libc.TLS) {
 49081  	cnt2++
 49082  }
 49083  
 49084  var cnt2 int32 = 0
 49085  
 49086  func faultsimStep(tls *libc.TLS) int32 {
 49087  	if !(int32(memfault.Fenable) != 0) {
 49088  		memfault.FnOkAfter++
 49089  		return 0
 49090  	}
 49091  	if memfault.FiCountdown > 0 {
 49092  		memfault.FiCountdown--
 49093  		memfault.FnOkBefore++
 49094  		return 0
 49095  	}
 49096  	if memfault.FnFail == 0 {
 49097  		sqlite3FirstFault(tls)
 49098  	}
 49099  	sqlite3Fault(tls)
 49100  	memfault.FnFail++
 49101  	if memfault.FisBenignMode > 0 {
 49102  		memfault.FnBenign++
 49103  	}
 49104  	memfault.FnRepeat--
 49105  	if memfault.FnRepeat <= 0 {
 49106  		memfault.Fenable = u8(0)
 49107  	}
 49108  	return 1
 49109  }
 49110  
 49111  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 49112  	var p uintptr = uintptr(0)
 49113  	if !(faultsimStep(tls) != 0) {
 49114  		p = (*struct {
 49115  			f func(*libc.TLS, int32) uintptr
 49116  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 49117  	}
 49118  	return p
 49119  }
 49120  
 49121  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 49122  	var p uintptr = uintptr(0)
 49123  	if !(faultsimStep(tls) != 0) {
 49124  		p = (*struct {
 49125  			f func(*libc.TLS, uintptr, int32) uintptr
 49126  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 49127  	}
 49128  	return p
 49129  }
 49130  
 49131  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 49132  	memfault.FiCountdown = nDelay
 49133  	memfault.FnRepeat = nRepeat
 49134  	memfault.FnBenign = 0
 49135  	memfault.FnFail = 0
 49136  	memfault.FnOkBefore = 0
 49137  	memfault.FnOkAfter = 0
 49138  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 49139  
 49140  	memfault.FisBenignMode = 0
 49141  }
 49142  
 49143  func faultsimFailures(tls *libc.TLS) int32 {
 49144  	return memfault.FnFail
 49145  }
 49146  
 49147  func faultsimBenignFailures(tls *libc.TLS) int32 {
 49148  	return memfault.FnBenign
 49149  }
 49150  
 49151  func faultsimPending(tls *libc.TLS) int32 {
 49152  	if memfault.Fenable != 0 {
 49153  		return memfault.FiCountdown
 49154  	} else {
 49155  		return -1
 49156  	}
 49157  	return int32(0)
 49158  }
 49159  
 49160  func faultsimBeginBenign(tls *libc.TLS) {
 49161  	memfault.FisBenignMode++
 49162  }
 49163  
 49164  func faultsimEndBenign(tls *libc.TLS) {
 49165  	memfault.FisBenignMode--
 49166  }
 49167  
 49168  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 49169  	bp := tls.Alloc(200)
 49170  	defer tls.Free(200)
 49171  
 49172  	var rc int32
 49173  
 49174  	install = func() int32 {
 49175  		if install != 0 {
 49176  			return 1
 49177  		}
 49178  		return 0
 49179  	}()
 49180  
 49181  	if install == memfault.FisInstalled {
 49182  		return SQLITE_ERROR
 49183  	}
 49184  
 49185  	if install != 0 {
 49186  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+40))
 49187  
 49188  		if rc == SQLITE_OK {
 49189  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 49190  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 49191  				f func(*libc.TLS, int32) uintptr
 49192  			}{faultsimMalloc}))
 49193  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 49194  				f func(*libc.TLS, uintptr, int32) uintptr
 49195  			}{faultsimRealloc}))
 49196  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 49197  		}
 49198  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 49199  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 49200  	} else {
 49201  		libc.Xmemset(tls, bp+136, 0, uint64(unsafe.Sizeof(sqlite3_mem_methods{})))
 49202  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+136))
 49203  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+136))
 49204  
 49205  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+40))
 49206  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 49207  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 49208  	}
 49209  
 49210  	if rc == SQLITE_OK {
 49211  		memfault.FisInstalled = 1
 49212  	}
 49213  	return rc
 49214  }
 49215  
 49216  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 49217  	bp := tls.Alloc(20)
 49218  	defer tls.Free(20)
 49219  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 49220  
 49221  	var i int32
 49222  	var k int32
 49223  
 49224  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 49225  		libc.Xstrcpy(tls, z, ts+14193)
 49226  		return
 49227  	}
 49228  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49229  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 49230  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49231  		libc.Xmemcpy(tls, bp+16, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 49232  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 16)))
 49233  	} else {
 49234  	}
 49235  	i = 0
 49236  	k = int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) - uint64(1))
 49237  __1:
 49238  	if !(uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2)) {
 49239  		goto __3
 49240  	}
 49241  	{
 49242  		*(*uint8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 49243  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 49244  
 49245  	}
 49246  	goto __2
 49247  __2:
 49248  	i++
 49249  	k--
 49250  	goto __1
 49251  	goto __3
 49252  __3:
 49253  	;
 49254  	*(*uint8)(unsafe.Pointer(z + 16)) = uint8(0)
 49255  }
 49256  
 49257  var zHex = *(*[17]uint8)(unsafe.Pointer(ts + 31194))
 49258  
 49259  func hexToInt(tls *libc.TLS, h int32) int32 {
 49260  	if h >= '0' && h <= '9' {
 49261  		return h - '0'
 49262  	} else if h >= 'a' && h <= 'f' {
 49263  		return h - 'a' + 10
 49264  	} else {
 49265  		return -1
 49266  	}
 49267  	return int32(0)
 49268  }
 49269  
 49270  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 49271  	bp := tls.Alloc(12)
 49272  	defer tls.Free(12)
 49273  
 49274  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 49275  	var i int32
 49276  
 49277  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) && *(*uint8)(unsafe.Pointer(z)) != 0; i++ {
 49278  		var v int32
 49279  		v = hexToInt(tls, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 49280  		if v < 0 {
 49281  			return TCL_ERROR
 49282  		}
 49283  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 49284  	}
 49285  	if int32(*(*uint8)(unsafe.Pointer(z))) != 0 {
 49286  		return TCL_ERROR
 49287  	}
 49288  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49289  		libc.Xmemcpy(tls, pp, bp, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 49290  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 49291  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 49292  		libc.Xmemcpy(tls, pp, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 49293  	} else {
 49294  	}
 49295  	return TCL_OK
 49296  }
 49297  
 49298  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49299  	bp := tls.Alloc(120)
 49300  	defer tls.Free(120)
 49301  
 49302  	var p uintptr
 49303  
 49304  	if objc != 2 {
 49305  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32817)
 49306  		return TCL_ERROR
 49307  	}
 49308  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 49309  		return TCL_ERROR
 49310  	}
 49311  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 49312  	pointerToText(tls, p, bp+20)
 49313  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 49314  	return TCL_OK
 49315  }
 49316  
 49317  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49318  	bp := tls.Alloc(156)
 49319  	defer tls.Free(156)
 49320  
 49321  	var p uintptr
 49322  
 49323  	if objc != 3 {
 49324  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32824)
 49325  		return TCL_ERROR
 49326  	}
 49327  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 49328  		return TCL_ERROR
 49329  	}
 49330  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 49331  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49332  		return TCL_ERROR
 49333  	}
 49334  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 49335  	pointerToText(tls, p, bp+56)
 49336  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+56, uintptr(0)))
 49337  	return TCL_OK
 49338  }
 49339  
 49340  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49341  	bp := tls.Alloc(32)
 49342  	defer tls.Free(32)
 49343  
 49344  	if objc != 2 {
 49345  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32851)
 49346  		return TCL_ERROR
 49347  	}
 49348  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 49349  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49350  		return TCL_ERROR
 49351  	}
 49352  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 49353  	return TCL_OK
 49354  }
 49355  
 49356  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49357  	bp := tls.Alloc(172)
 49358  	defer tls.Free(172)
 49359  
 49360  	var i int32
 49361  	var zHex uintptr
 49362  	var zOut uintptr
 49363  
 49364  	if objc != 4 {
 49365  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32857)
 49366  		return TCL_ERROR
 49367  	}
 49368  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 49369  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49370  		return TCL_ERROR
 49371  	}
 49372  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 49373  		return TCL_ERROR
 49374  	}
 49375  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 49376  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49377  		return TCL_ERROR
 49378  	}
 49379  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+68)
 49380  	if uint64(*(*int32)(unsafe.Pointer(bp + 68))) > uint64(unsafe.Sizeof([100]uint8{}))*uint64(2) {
 49381  		*(*int32)(unsafe.Pointer(bp + 68)) = int32(uint64(unsafe.Sizeof([100]uint8{})) * uint64(2))
 49382  	}
 49383  	*(*int32)(unsafe.Pointer(bp + 68)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 49384  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 49385  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+32896, uintptr(0)))
 49386  		return TCL_ERROR
 49387  	}
 49388  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 49389  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 49390  		*(*uint8)(unsafe.Pointer(zOut + uintptr(i))) = *(*uint8)(unsafe.Pointer(bp + 72 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 68)))))
 49391  	}
 49392  	return TCL_OK
 49393  }
 49394  
 49395  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49396  	bp := tls.Alloc(168)
 49397  	defer tls.Free(168)
 49398  
 49399  	var n int32
 49400  	var zBin uintptr
 49401  
 49402  	if objc != 3 {
 49403  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32904)
 49404  		return TCL_ERROR
 49405  	}
 49406  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 49407  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49408  		return TCL_ERROR
 49409  	}
 49410  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 49411  		return TCL_ERROR
 49412  	}
 49413  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 49414  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49415  		return TCL_ERROR
 49416  	}
 49417  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 49418  	for *(*int32)(unsafe.Pointer(bp + 64)) > 0 {
 49419  		if uint64(*(*int32)(unsafe.Pointer(bp + 64))) > (uint64(unsafe.Sizeof([100]uint8{}))-uint64(1))/uint64(2) {
 49420  			n = int32((uint64(unsafe.Sizeof([100]uint8{})) - uint64(1)) / uint64(2))
 49421  		} else {
 49422  			n = *(*int32)(unsafe.Pointer(bp + 64))
 49423  		}
 49424  		libc.Xmemcpy(tls, bp+68, zBin, uint64(n))
 49425  		zBin += uintptr(n)
 49426  		*(*int32)(unsafe.Pointer(bp + 64)) -= n
 49427  		sqlite3TestBinToHex(tls, bp+68, n)
 49428  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+68, uintptr(0)))
 49429  	}
 49430  	return TCL_OK
 49431  }
 49432  
 49433  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49434  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 49435  	return TCL_OK
 49436  }
 49437  
 49438  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49439  	bp := tls.Alloc(4)
 49440  	defer tls.Free(4)
 49441  
 49442  	*(*int32)(unsafe.Pointer(bp)) = 0
 49443  	if objc != 1 && objc != 2 {
 49444  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32917)
 49445  		return TCL_ERROR
 49446  	}
 49447  	if objc == 2 {
 49448  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49449  			return TCL_ERROR
 49450  		}
 49451  	}
 49452  	tcl.XTcl_SetObjResult(tls, interp,
 49453  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 49454  	return TCL_OK
 49455  }
 49456  
 49457  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49458  	bp := tls.Alloc(4)
 49459  	defer tls.Free(4)
 49460  
 49461  	if objc != 2 {
 49462  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32925)
 49463  		return TCL_ERROR
 49464  	}
 49465  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49466  		return TCL_ERROR
 49467  	}
 49468  	return TCL_OK
 49469  }
 49470  
 49471  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49472  	if objc != 2 {
 49473  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49474  		return TCL_ERROR
 49475  	}
 49476  	return TCL_OK
 49477  }
 49478  
 49479  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49480  	var nMalloc int32 = -1
 49481  	if objc != 1 {
 49482  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49483  		return TCL_ERROR
 49484  	}
 49485  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 49486  	return TCL_OK
 49487  }
 49488  
 49489  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49490  	bp := tls.Alloc(36)
 49491  	defer tls.Free(36)
 49492  
 49493  	var ii int32
 49494  
 49495  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 49496  	var pBenignCnt uintptr = uintptr(0)
 49497  	var nBenign int32
 49498  	var nFail int32 = 0
 49499  
 49500  	if objc < 2 {
 49501  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32939)
 49502  		return TCL_ERROR
 49503  	}
 49504  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24) != 0 {
 49505  		return TCL_ERROR
 49506  	}
 49507  
 49508  	for ii = 2; ii < objc; ii = ii + 2 {
 49509  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*8)), bp+28)
 49510  		var zErr uintptr = uintptr(0)
 49511  
 49512  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32957, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49513  			if ii == objc-1 {
 49514  				zErr = ts + 12638
 49515  			} else {
 49516  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8)), bp+32) != 0 {
 49517  					return TCL_ERROR
 49518  				}
 49519  			}
 49520  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32965, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49521  			if ii == objc-1 {
 49522  				zErr = ts + 12638
 49523  			} else {
 49524  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8))
 49525  			}
 49526  		} else {
 49527  			zErr = ts + 12444
 49528  		}
 49529  
 49530  		if zErr != 0 {
 49531  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 49532  			return TCL_ERROR
 49533  		}
 49534  	}
 49535  
 49536  	nBenign = faultsimBenignFailures(tls)
 49537  	nFail = faultsimFailures(tls)
 49538  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 49539  
 49540  	if pBenignCnt != 0 {
 49541  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 49542  	}
 49543  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 49544  	return TCL_OK
 49545  }
 49546  
 49547  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49548  	var nPending int32
 49549  	if objc != 1 {
 49550  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49551  		return TCL_ERROR
 49552  	}
 49553  	nPending = faultsimPending(tls)
 49554  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 49555  	return TCL_OK
 49556  }
 49557  
 49558  var sqlite3_memdebug_title_count int32 = 0
 49559  
 49560  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49561  	sqlite3_memdebug_title_count++
 49562  	if objc != 2 {
 49563  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32976)
 49564  		return TCL_ERROR
 49565  	}
 49566  	return TCL_OK
 49567  }
 49568  
 49569  var aMallocLog Tcl_HashTable
 49570  var mallocLogEnabled int32 = 0
 49571  
 49572  type MallocLog1 = struct {
 49573  	FnCall int32
 49574  	FnByte int32
 49575  }
 49576  
 49577  type MallocLog = MallocLog1
 49578  
 49579  func test_memdebug_log_clear(tls *libc.TLS) {
 49580  	bp := tls.Alloc(24)
 49581  	defer tls.Free(24)
 49582  
 49583  	var pEntry uintptr
 49584  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 49585  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49586  		tcl.XTcl_Free(tls, pLog)
 49587  	}
 49588  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 49589  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 49590  		if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 49591  			return uint64(1)
 49592  		}
 49593  		return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 49594  	}()))
 49595  }
 49596  
 49597  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49598  	bp := tls.Alloc(128)
 49599  	defer tls.Free(128)
 49600  
 49601  	if !(isInit != 0) {
 49602  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 49603  			if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 49604  				return uint64(1)
 49605  			}
 49606  			return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 49607  		}()))
 49608  		isInit = 1
 49609  	}
 49610  
 49611  	if objc < 2 {
 49612  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 49613  	}
 49614  	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 {
 49615  		return TCL_ERROR
 49616  	}
 49617  
 49618  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 49619  	case uint32(0):
 49620  		mallocLogEnabled = 1
 49621  		break
 49622  	case uint32(1):
 49623  		mallocLogEnabled = 0
 49624  		break
 49625  	case uint32(2):
 49626  		{
 49627  			var pEntry uintptr
 49628  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 49629  
 49630  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+8); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+8) {
 49631  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49632  				var aKey uintptr = func() uintptr {
 49633  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 49634  						return *(*uintptr)(unsafe.Pointer(pEntry + 32))
 49635  					}
 49636  					return pEntry + 32
 49637  				}()
 49638  				var ii int32
 49639  
 49640  				*(*uintptr)(unsafe.Pointer(bp + 32)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 49641  				*(*uintptr)(unsafe.Pointer(bp + 32 + 1*8)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 49642  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 49643  					*(*uintptr)(unsafe.Pointer(bp + 32 + uintptr(ii+2)*8)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 49644  				}
 49645  
 49646  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 49647  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+32))
 49648  			}
 49649  
 49650  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 49651  			break
 49652  
 49653  		}
 49654  	case uint32(3):
 49655  		{
 49656  			test_memdebug_log_clear(tls)
 49657  			break
 49658  
 49659  		}
 49660  
 49661  	case uint32(4):
 49662  		{
 49663  			break
 49664  
 49665  		}
 49666  	}
 49667  
 49668  	return TCL_OK
 49669  }
 49670  
 49671  var isInit int32 = 0
 49672  var MB_strs = [5]uintptr{ts + 32998, ts + 33004, ts + 33009, ts + 33014, ts + 33020}
 49673  
 49674  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49675  	bp := tls.Alloc(56)
 49676  	defer tls.Free(56)
 49677  
 49678  	var pRes uintptr
 49679  	if objc != 3 {
 49680  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33025)
 49681  		return TCL_ERROR
 49682  	}
 49683  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+48) != 0 {
 49684  		return TCL_ERROR
 49685  	}
 49686  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+52) != 0 {
 49687  		return TCL_ERROR
 49688  	}
 49689  	libc.Xfree(tls, buf1)
 49690  	buf1 = uintptr(0)
 49691  
 49692  	pRes = tcl.XTcl_NewObj(tls)
 49693  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 49694  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 49695  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 49696  
 49697  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 49698  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 49699  	} else {
 49700  		buf1 = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 49701  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 49702  	}
 49703  	return TCL_OK
 49704  }
 49705  
 49706  var buf1 uintptr = uintptr(0)
 49707  
 49708  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49709  	bp := tls.Alloc(32)
 49710  	defer tls.Free(32)
 49711  
 49712  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 49713  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 49714  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 49715  	if objc < 2 || objc > 5 {
 49716  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 49717  			ts+33032)
 49718  		return TCL_ERROR
 49719  	}
 49720  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 49721  		return TCL_ERROR
 49722  	}
 49723  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 49724  		return TCL_ERROR
 49725  	}
 49726  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 49727  		return TCL_ERROR
 49728  	}
 49729  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 49730  		return TCL_ERROR
 49731  	}
 49732  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 49733  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33079,
 49734  			uintptr(0)))
 49735  		return TCL_ERROR
 49736  	}
 49737  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 49738  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 49739  	return TCL_OK
 49740  }
 49741  
 49742  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49743  	bp := tls.Alloc(12)
 49744  	defer tls.Free(12)
 49745  
 49746  	var rc int32
 49747  	if objc != 2 {
 49748  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49749  		return TCL_ERROR
 49750  	}
 49751  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49752  		return TCL_ERROR
 49753  	}
 49754  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49755  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49756  	return TCL_OK
 49757  }
 49758  
 49759  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49760  	bp := tls.Alloc(24)
 49761  	defer tls.Free(24)
 49762  
 49763  	var pRet uintptr
 49764  	if objc != 3 {
 49765  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 49766  		return TCL_ERROR
 49767  	}
 49768  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 49769  		return TCL_ERROR
 49770  	}
 49771  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 49772  		return TCL_ERROR
 49773  	}
 49774  	pRet = tcl.XTcl_NewObj(tls)
 49775  	tcl.XTcl_ListObjAppendElement(tls,
 49776  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 49777  	tcl.XTcl_ListObjAppendElement(tls,
 49778  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 49779  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 49780  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 49781  	return TCL_OK
 49782  }
 49783  
 49784  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49785  	bp := tls.Alloc(84)
 49786  	defer tls.Free(84)
 49787  
 49788  	var rc int32
 49789  
 49790  	if objc != 5 {
 49791  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33133)
 49792  		return TCL_ERROR
 49793  	}
 49794  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 49795  		return TCL_ERROR
 49796  	}
 49797  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 49798  		return TCL_ERROR
 49799  	}
 49800  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76) != 0 {
 49801  		return TCL_ERROR
 49802  	}
 49803  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 49804  		return TCL_ERROR
 49805  	}
 49806  	if *(*int32)(unsafe.Pointer(bp + 72)) == 0 {
 49807  		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))))
 49808  	} 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]uint8{})) {
 49809  		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))))
 49810  	} else {
 49811  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33150, uintptr(0)))
 49812  		return TCL_ERROR
 49813  	}
 49814  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49815  	return TCL_OK
 49816  }
 49817  
 49818  var azBuf [2][10000]uint8
 49819  
 49820  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49821  	bp := tls.Alloc(56)
 49822  	defer tls.Free(56)
 49823  
 49824  	var rc int32
 49825  
 49826  	var aArg uintptr = objv + 1*8
 49827  	var nArg int32 = objc - 1
 49828  
 49829  	if nArg != 2 {
 49830  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33188)
 49831  		return TCL_ERROR
 49832  	}
 49833  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 49834  		return TCL_ERROR
 49835  	}
 49836  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*8)), bp+52) != 0 {
 49837  		return TCL_ERROR
 49838  	}
 49839  
 49840  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 49841  		libc.Xfree(tls, zBuf)
 49842  		zBuf = uintptr(0)
 49843  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 49844  	} else {
 49845  		zBuf = libc.Xrealloc(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp + 48))))
 49846  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 49847  	}
 49848  
 49849  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49850  	return TCL_OK
 49851  }
 49852  
 49853  var zBuf uintptr
 49854  
 49855  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49856  	bp := tls.Alloc(12)
 49857  	defer tls.Free(12)
 49858  
 49859  	var rc int32
 49860  
 49861  	var aArg uintptr = objv + 1*8
 49862  	var nArg int32 = objc - 1
 49863  
 49864  	if nArg != 1 {
 49865  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 49866  		return TCL_ERROR
 49867  	}
 49868  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 49869  		return TCL_ERROR
 49870  	}
 49871  
 49872  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49873  
 49874  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49875  	return TCL_OK
 49876  }
 49877  
 49878  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49879  	bp := tls.Alloc(40)
 49880  	defer tls.Free(40)
 49881  
 49882  	if objc != 2 && objc != 1 {
 49883  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33204)
 49884  		return TCL_ERROR
 49885  	}
 49886  	if objc == 2 {
 49887  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 49888  			return TCL_ERROR
 49889  		}
 49890  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 49891  			tcl.XTcl_AppendResult(tls, interp,
 49892  				libc.VaList(bp, ts+33209,
 49893  					uintptr(0)))
 49894  			return TCL_ERROR
 49895  		}
 49896  	} else {
 49897  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 49898  			tcl.XTcl_AppendResult(tls, interp,
 49899  				libc.VaList(bp+16, ts+33267,
 49900  					uintptr(0)))
 49901  			return TCL_ERROR
 49902  		}
 49903  	}
 49904  	return TCL_OK
 49905  }
 49906  
 49907  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49908  	bp := tls.Alloc(12)
 49909  	defer tls.Free(12)
 49910  
 49911  	var rc int32
 49912  
 49913  	if objc != 2 {
 49914  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49915  		return TCL_ERROR
 49916  	}
 49917  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49918  		return TCL_ERROR
 49919  	}
 49920  
 49921  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49922  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49923  
 49924  	return TCL_OK
 49925  }
 49926  
 49927  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49928  	bp := tls.Alloc(12)
 49929  	defer tls.Free(12)
 49930  
 49931  	var rc int32
 49932  
 49933  	if objc != 2 {
 49934  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49935  		return TCL_ERROR
 49936  	}
 49937  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49938  		return TCL_ERROR
 49939  	}
 49940  
 49941  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49942  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49943  
 49944  	return TCL_OK
 49945  }
 49946  
 49947  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49948  	bp := tls.Alloc(12)
 49949  	defer tls.Free(12)
 49950  
 49951  	var rc int32
 49952  
 49953  	if objc != 2 {
 49954  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49955  		return TCL_ERROR
 49956  	}
 49957  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49958  		return TCL_ERROR
 49959  	}
 49960  
 49961  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49962  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49963  
 49964  	return TCL_OK
 49965  }
 49966  
 49967  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49968  	if objc != 2 {
 49969  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49970  		return TCL_ERROR
 49971  	}
 49972  
 49973  	switch int32(clientData) {
 49974  	case 3:
 49975  		{
 49976  		}
 49977  		fallthrough
 49978  	case 5:
 49979  		{
 49980  		}
 49981  	}
 49982  	return TCL_OK
 49983  }
 49984  
 49985  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49986  	bp := tls.Alloc(16)
 49987  	defer tls.Free(16)
 49988  
 49989  	var rc int32
 49990  
 49991  	var i int32
 49992  	*(*int32)(unsafe.Pointer(bp)) = 0
 49993  
 49994  	var zOpName uintptr
 49995  	var pResult uintptr
 49996  	if objc != 3 {
 49997  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33318)
 49998  		return TCL_ERROR
 49999  	}
 50000  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 50001  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 50002  		FzName       uintptr
 50003  		Fop          int32
 50004  		F__ccgo_pad1 [4]byte
 50005  	}{}))); i++ {
 50006  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 50007  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 50008  			break
 50009  		}
 50010  	}
 50011  	if i >= int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 50012  		FzName       uintptr
 50013  		Fop          int32
 50014  		F__ccgo_pad1 [4]byte
 50015  	}{}))) {
 50016  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 50017  			return TCL_ERROR
 50018  		}
 50019  	}
 50020  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 50021  		return TCL_ERROR
 50022  	}
 50023  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 50024  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 50025  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 50026  	pResult = tcl.XTcl_NewObj(tls)
 50027  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 50028  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 50029  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 50030  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 50031  	return TCL_OK
 50032  }
 50033  
 50034  var aOp1 = [10]struct {
 50035  	FzName       uintptr
 50036  	Fop          int32
 50037  	F__ccgo_pad1 [4]byte
 50038  }{
 50039  	{FzName: ts + 33338},
 50040  	{FzName: ts + 33364, Fop: SQLITE_STATUS_MALLOC_SIZE},
 50041  	{FzName: ts + 33390, Fop: SQLITE_STATUS_PAGECACHE_USED},
 50042  	{FzName: ts + 33419, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 50043  	{FzName: ts + 33452, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 50044  	{FzName: ts + 33481, Fop: SQLITE_STATUS_SCRATCH_USED},
 50045  	{FzName: ts + 33508, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 50046  	{FzName: ts + 33539, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 50047  	{FzName: ts + 33566, Fop: SQLITE_STATUS_PARSER_STACK},
 50048  	{FzName: ts + 33593, Fop: SQLITE_STATUS_MALLOC_COUNT},
 50049  }
 50050  
 50051  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50052  	bp := tls.Alloc(24)
 50053  	defer tls.Free(24)
 50054  
 50055  	var rc int32
 50056  
 50057  	var i int32
 50058  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 50059  
 50060  	var zOpName uintptr
 50061  
 50062  	var pResult uintptr
 50063  	if objc != 4 {
 50064  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33620)
 50065  		return TCL_ERROR
 50066  	}
 50067  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 50068  		return TCL_ERROR
 50069  	}
 50070  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 50071  	if libc.Xmemcmp(tls, zOpName, ts+33643, uint64(7)) == 0 {
 50072  		zOpName += uintptr(7)
 50073  	}
 50074  	if libc.Xmemcmp(tls, zOpName, ts+33651, uint64(9)) == 0 {
 50075  		zOpName += uintptr(9)
 50076  	}
 50077  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 50078  		FzName       uintptr
 50079  		Fop          int32
 50080  		F__ccgo_pad1 [4]byte
 50081  	}{}))); i++ {
 50082  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 50083  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp2[i].Fop
 50084  			break
 50085  		}
 50086  	}
 50087  	if i >= int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 50088  		FzName       uintptr
 50089  		Fop          int32
 50090  		F__ccgo_pad1 [4]byte
 50091  	}{}))) {
 50092  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 50093  			return TCL_ERROR
 50094  		}
 50095  	}
 50096  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 50097  		return TCL_ERROR
 50098  	}
 50099  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 50100  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 50101  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), bp+16, bp+20, *(*int32)(unsafe.Pointer(bp + 12)))
 50102  	pResult = tcl.XTcl_NewObj(tls)
 50103  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 50104  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 50105  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 50106  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 50107  	return TCL_OK
 50108  }
 50109  
 50110  var aOp2 = [13]struct {
 50111  	FzName       uintptr
 50112  	Fop          int32
 50113  	F__ccgo_pad1 [4]byte
 50114  }{
 50115  	{FzName: ts + 33661},
 50116  	{FzName: ts + 33676, Fop: SQLITE_DBSTATUS_CACHE_USED},
 50117  	{FzName: ts + 33687, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 50118  	{FzName: ts + 33699, Fop: SQLITE_DBSTATUS_STMT_USED},
 50119  	{FzName: ts + 33709, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 50120  	{FzName: ts + 33723, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 50121  	{FzName: ts + 33743, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 50122  	{FzName: ts + 33763, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 50123  	{FzName: ts + 33773, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 50124  	{FzName: ts + 33784, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 50125  	{FzName: ts + 33796, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 50126  	{FzName: ts + 33809, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 50127  	{FzName: ts + 33827, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 50128  }
 50129  
 50130  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50131  	bp := tls.Alloc(4)
 50132  	defer tls.Free(4)
 50133  
 50134  	var rc int32
 50135  
 50136  	if objc != 2 {
 50137  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 50138  		return TCL_ERROR
 50139  	}
 50140  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) {
 50141  		return TCL_ERROR
 50142  	}
 50143  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 50144  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50145  	return TCL_OK
 50146  }
 50147  
 50148  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50149  	var rc int32 = SQLITE_MISUSE
 50150  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 50151  	return TCL_OK
 50152  }
 50153  
 50154  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50155  	bp := tls.Alloc(4)
 50156  	defer tls.Free(4)
 50157  
 50158  	if objc > 2 {
 50159  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33839)
 50160  		return TCL_ERROR
 50161  	} else if objc == 2 {
 50162  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 50163  			return TCL_ERROR
 50164  		}
 50165  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 50166  	}
 50167  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 50168  	return TCL_OK
 50169  }
 50170  
 50171  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 50172  	var i int32
 50173  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd11))/uint64(unsafe.Sizeof(struct {
 50174  		FzName       uintptr
 50175  		FxProc       uintptr
 50176  		FclientData  int32
 50177  		F__ccgo_pad1 [4]byte
 50178  	}{})); i++ {
 50179  		var c ClientData = uintptr(intptr_t(aObjCmd11[i].FclientData))
 50180  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 50181  	}
 50182  	return TCL_OK
 50183  }
 50184  
 50185  var aObjCmd11 = [32]struct {
 50186  	FzName       uintptr
 50187  	FxProc       uintptr
 50188  	FclientData  int32
 50189  	F__ccgo_pad1 [4]byte
 50190  }{
 50191  	{FzName: ts + 28095, FxProc: 0},
 50192  	{FzName: ts + 28110, FxProc: 0},
 50193  	{FzName: ts + 33849, FxProc: 0},
 50194  	{FzName: ts + 33862, FxProc: 0},
 50195  	{FzName: ts + 33869, FxProc: 0},
 50196  	{FzName: ts + 33876, FxProc: 0},
 50197  	{FzName: ts + 33896, FxProc: 0},
 50198  	{FzName: ts + 33921, FxProc: 0},
 50199  	{FzName: ts + 33948, FxProc: 0},
 50200  	{FzName: ts + 33970, FxProc: 0},
 50201  	{FzName: ts + 33992, FxProc: 0},
 50202  	{FzName: ts + 34017, FxProc: 0},
 50203  	{FzName: ts + 34043, FxProc: 0},
 50204  	{FzName: ts + 34073, FxProc: 0},
 50205  	{FzName: ts + 34094, FxProc: 0},
 50206  	{FzName: ts + 34119, FxProc: 0},
 50207  	{FzName: ts + 34145, FxProc: 0},
 50208  	{FzName: ts + 34160, FxProc: 0},
 50209  	{FzName: ts + 34178, FxProc: 0},
 50210  	{FzName: ts + 34202, FxProc: 0},
 50211  	{FzName: ts + 34222, FxProc: 0},
 50212  	{FzName: ts + 34247, FxProc: 0},
 50213  	{FzName: ts + 34272, FxProc: 0},
 50214  	{FzName: ts + 34297, FxProc: 0},
 50215  	{FzName: ts + 34318, FxProc: 0},
 50216  	{FzName: ts + 34337, FxProc: 0},
 50217  	{FzName: ts + 34356, FxProc: 0},
 50218  	{FzName: ts + 34377, FxProc: 0},
 50219  	{FzName: ts + 34405, FxProc: 0, FclientData: 3},
 50220  	{FzName: ts + 34426, FxProc: 0, FclientData: 5},
 50221  	{FzName: ts + 34447, FxProc: 0},
 50222  	{FzName: ts + 34471, FxProc: 0},
 50223  }
 50224  
 50225  type fd_set4 = struct{ F__fds_bits [16]int64 }
 50226  
 50227  type MD5Context1 = struct {
 50228  	FisInit int32
 50229  	Fbuf    [4]uint32
 50230  	Fbits   [2]uint32
 50231  	Fin     [64]uint8
 50232  }
 50233  
 50234  type MD5Context = MD5Context1
 50235  
 50236  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 50237  	var t uint32
 50238  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 50239  		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))))
 50240  		*(*uint32)(unsafe.Pointer(buf)) = t
 50241  		buf += uintptr(4)
 50242  	}
 50243  }
 50244  
 50245  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 50246  	var a uint32
 50247  	var b uint32
 50248  	var c uint32
 50249  	var d uint32
 50250  
 50251  	a = *(*uint32)(unsafe.Pointer(buf))
 50252  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 50253  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 50254  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 50255  
 50256  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 50257  	a = a<<7 | a>>(32-7)
 50258  	a = a + b
 50259  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 50260  	d = d<<12 | d>>(32-12)
 50261  	d = d + a
 50262  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 50263  	c = c<<17 | c>>(32-17)
 50264  	c = c + d
 50265  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 50266  	b = b<<22 | b>>(32-22)
 50267  	b = b + c
 50268  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 50269  	a = a<<7 | a>>(32-7)
 50270  	a = a + b
 50271  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 50272  	d = d<<12 | d>>(32-12)
 50273  	d = d + a
 50274  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 50275  	c = c<<17 | c>>(32-17)
 50276  	c = c + d
 50277  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 50278  	b = b<<22 | b>>(32-22)
 50279  	b = b + c
 50280  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 50281  	a = a<<7 | a>>(32-7)
 50282  	a = a + b
 50283  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 50284  	d = d<<12 | d>>(32-12)
 50285  	d = d + a
 50286  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 50287  	c = c<<17 | c>>(32-17)
 50288  	c = c + d
 50289  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 50290  	b = b<<22 | b>>(32-22)
 50291  	b = b + c
 50292  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 50293  	a = a<<7 | a>>(32-7)
 50294  	a = a + b
 50295  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 50296  	d = d<<12 | d>>(32-12)
 50297  	d = d + a
 50298  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 50299  	c = c<<17 | c>>(32-17)
 50300  	c = c + d
 50301  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 50302  	b = b<<22 | b>>(32-22)
 50303  	b = b + c
 50304  
 50305  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 50306  	a = a<<5 | a>>(32-5)
 50307  	a = a + b
 50308  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 50309  	d = d<<9 | d>>(32-9)
 50310  	d = d + a
 50311  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 50312  	c = c<<14 | c>>(32-14)
 50313  	c = c + d
 50314  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 50315  	b = b<<20 | b>>(32-20)
 50316  	b = b + c
 50317  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 50318  	a = a<<5 | a>>(32-5)
 50319  	a = a + b
 50320  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 50321  	d = d<<9 | d>>(32-9)
 50322  	d = d + a
 50323  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 50324  	c = c<<14 | c>>(32-14)
 50325  	c = c + d
 50326  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 50327  	b = b<<20 | b>>(32-20)
 50328  	b = b + c
 50329  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 50330  	a = a<<5 | a>>(32-5)
 50331  	a = a + b
 50332  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 50333  	d = d<<9 | d>>(32-9)
 50334  	d = d + a
 50335  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 50336  	c = c<<14 | c>>(32-14)
 50337  	c = c + d
 50338  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 50339  	b = b<<20 | b>>(32-20)
 50340  	b = b + c
 50341  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 50342  	a = a<<5 | a>>(32-5)
 50343  	a = a + b
 50344  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 50345  	d = d<<9 | d>>(32-9)
 50346  	d = d + a
 50347  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 50348  	c = c<<14 | c>>(32-14)
 50349  	c = c + d
 50350  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 50351  	b = b<<20 | b>>(32-20)
 50352  	b = b + c
 50353  
 50354  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 50355  	a = a<<4 | a>>(32-4)
 50356  	a = a + b
 50357  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 50358  	d = d<<11 | d>>(32-11)
 50359  	d = d + a
 50360  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 50361  	c = c<<16 | c>>(32-16)
 50362  	c = c + d
 50363  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 50364  	b = b<<23 | b>>(32-23)
 50365  	b = b + c
 50366  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 50367  	a = a<<4 | a>>(32-4)
 50368  	a = a + b
 50369  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 50370  	d = d<<11 | d>>(32-11)
 50371  	d = d + a
 50372  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 50373  	c = c<<16 | c>>(32-16)
 50374  	c = c + d
 50375  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 50376  	b = b<<23 | b>>(32-23)
 50377  	b = b + c
 50378  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 50379  	a = a<<4 | a>>(32-4)
 50380  	a = a + b
 50381  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 50382  	d = d<<11 | d>>(32-11)
 50383  	d = d + a
 50384  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 50385  	c = c<<16 | c>>(32-16)
 50386  	c = c + d
 50387  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 50388  	b = b<<23 | b>>(32-23)
 50389  	b = b + c
 50390  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 50391  	a = a<<4 | a>>(32-4)
 50392  	a = a + b
 50393  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 50394  	d = d<<11 | d>>(32-11)
 50395  	d = d + a
 50396  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 50397  	c = c<<16 | c>>(32-16)
 50398  	c = c + d
 50399  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 50400  	b = b<<23 | b>>(32-23)
 50401  	b = b + c
 50402  
 50403  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 50404  	a = a<<6 | a>>(32-6)
 50405  	a = a + b
 50406  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 50407  	d = d<<10 | d>>(32-10)
 50408  	d = d + a
 50409  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 50410  	c = c<<15 | c>>(32-15)
 50411  	c = c + d
 50412  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 50413  	b = b<<21 | b>>(32-21)
 50414  	b = b + c
 50415  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 50416  	a = a<<6 | a>>(32-6)
 50417  	a = a + b
 50418  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 50419  	d = d<<10 | d>>(32-10)
 50420  	d = d + a
 50421  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 50422  	c = c<<15 | c>>(32-15)
 50423  	c = c + d
 50424  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 50425  	b = b<<21 | b>>(32-21)
 50426  	b = b + c
 50427  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 50428  	a = a<<6 | a>>(32-6)
 50429  	a = a + b
 50430  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 50431  	d = d<<10 | d>>(32-10)
 50432  	d = d + a
 50433  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 50434  	c = c<<15 | c>>(32-15)
 50435  	c = c + d
 50436  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 50437  	b = b<<21 | b>>(32-21)
 50438  	b = b + c
 50439  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 50440  	a = a<<6 | a>>(32-6)
 50441  	a = a + b
 50442  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 50443  	d = d<<10 | d>>(32-10)
 50444  	d = d + a
 50445  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 50446  	c = c<<15 | c>>(32-15)
 50447  	c = c + d
 50448  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 50449  	b = b<<21 | b>>(32-21)
 50450  	b = b + c
 50451  
 50452  	*(*uint32)(unsafe.Pointer(buf)) += a
 50453  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 50454  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 50455  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 50456  }
 50457  
 50458  func MD5Init(tls *libc.TLS, ctx uintptr) {
 50459  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 50460  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 50461  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 50462  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 50463  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 50464  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 50465  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 50466  }
 50467  
 50468  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 50469  	var t uint32
 50470  
 50471  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 50472  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 50473  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 50474  	}
 50475  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 50476  
 50477  	t = t >> 3 & uint32(0x3f)
 50478  
 50479  	if t != 0 {
 50480  		var p uintptr = ctx + 28 + uintptr(t)
 50481  
 50482  		t = uint32(64) - t
 50483  		if len < t {
 50484  			libc.Xmemcpy(tls, p, buf, uint64(len))
 50485  			return
 50486  		}
 50487  		libc.Xmemcpy(tls, p, buf, uint64(t))
 50488  		byteReverse(tls, ctx+28, uint32(16))
 50489  		MD5Transform(tls, ctx+4, ctx+28)
 50490  		buf += uintptr(t)
 50491  		len = len - t
 50492  	}
 50493  
 50494  	for len >= uint32(64) {
 50495  		libc.Xmemcpy(tls, ctx+28, buf, uint64(64))
 50496  		byteReverse(tls, ctx+28, uint32(16))
 50497  		MD5Transform(tls, ctx+4, ctx+28)
 50498  		buf += uintptr(64)
 50499  		len = len - uint32(64)
 50500  	}
 50501  
 50502  	libc.Xmemcpy(tls, ctx+28, buf, uint64(len))
 50503  }
 50504  
 50505  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 50506  	var count uint32
 50507  	var p uintptr
 50508  
 50509  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 50510  
 50511  	p = ctx + 28 + uintptr(count)
 50512  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 50513  
 50514  	count = uint32(64-1) - count
 50515  
 50516  	if count < uint32(8) {
 50517  		libc.Xmemset(tls, p, 0, uint64(count))
 50518  		byteReverse(tls, ctx+28, uint32(16))
 50519  		MD5Transform(tls, ctx+4, ctx+28)
 50520  
 50521  		libc.Xmemset(tls, ctx+28, 0, uint64(56))
 50522  	} else {
 50523  		libc.Xmemset(tls, p, 0, uint64(count-uint32(8)))
 50524  	}
 50525  	byteReverse(tls, ctx+28, uint32(14))
 50526  
 50527  	libc.Xmemcpy(tls, ctx+28+uintptr(14*4), ctx+20, uint64(8))
 50528  
 50529  	MD5Transform(tls, ctx+4, ctx+28)
 50530  	byteReverse(tls, ctx+4, uint32(4))
 50531  	libc.Xmemcpy(tls, digest, ctx+4, uint64(16))
 50532  }
 50533  
 50534  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 50535  	var i int32
 50536  	var j int32
 50537  
 50538  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 50539  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 50540  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 50541  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 50542  	}
 50543  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(j))) = uint8(0)
 50544  }
 50545  
 50546  var zEncode = *(*[17]uint8)(unsafe.Pointer(ts + 31194))
 50547  
 50548  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 50549  	bp := tls.Alloc(8)
 50550  	defer tls.Free(8)
 50551  
 50552  	var i int32
 50553  	var j int32
 50554  	var x uint32
 50555  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 50556  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 50557  		if i > 0 {
 50558  			*(*uint8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = uint8('-')
 50559  		}
 50560  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34501, libc.VaList(bp, x))
 50561  		j = j + 5
 50562  	}
 50563  	*(*uint8)(unsafe.Pointer(zDigest + uintptr(j))) = uint8(0)
 50564  }
 50565  
 50566  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50567  	bp := tls.Alloc(206)
 50568  	defer tls.Free(206)
 50569  
 50570  	var converter uintptr
 50571  
 50572  	if argc != 2 {
 50573  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50574  			ts+15307, uintptr(0)))
 50575  		return TCL_ERROR
 50576  	}
 50577  	MD5Init(tls, bp+48)
 50578  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 50579  	MD5Final(tls, bp+140, bp+48)
 50580  	converter = cd
 50581  	(*struct {
 50582  		f func(*libc.TLS, uintptr, uintptr)
 50583  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 50584  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 50585  	return TCL_OK
 50586  }
 50587  
 50588  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50589  	bp := tls.Alloc(10428)
 50590  	defer tls.Free(10428)
 50591  
 50592  	var in uintptr
 50593  	var ofst int32
 50594  	var amt int32
 50595  
 50596  	var converter uintptr
 50597  
 50598  	if argc != 2 && argc != 4 {
 50599  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50600  			ts+34506, uintptr(0)))
 50601  		return TCL_ERROR
 50602  	}
 50603  	if argc == 4 {
 50604  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 50605  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 50606  	} else {
 50607  		ofst = 0
 50608  		amt = 2147483647
 50609  	}
 50610  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4402)
 50611  	if in == uintptr(0) {
 50612  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34530, *(*uintptr)(unsafe.Pointer(argv + 1*8)),
 50613  			ts+34552, uintptr(0)))
 50614  		return TCL_ERROR
 50615  	}
 50616  	libc.Xfseek(tls, in, int64(ofst), SEEK_SET)
 50617  	MD5Init(tls, bp+80)
 50618  	for amt > 0 {
 50619  		var n int32
 50620  		n = int32(libc.Xfread(tls, bp+172, uint64(1), func() uint64 {
 50621  			if uint64(unsafe.Sizeof([10240]uint8{})) <= uint64(amt) {
 50622  				return uint64(unsafe.Sizeof([10240]uint8{}))
 50623  			}
 50624  			return uint64(amt)
 50625  		}(), in))
 50626  		if n <= 0 {
 50627  			break
 50628  		}
 50629  		MD5Update(tls, bp+80, bp+172, uint32(n))
 50630  		amt = amt - n
 50631  	}
 50632  	libc.Xfclose(tls, in)
 50633  	MD5Final(tls, bp+10412, bp+80)
 50634  	converter = cd
 50635  	(*struct {
 50636  		f func(*libc.TLS, uintptr, uintptr)
 50637  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 50638  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 50639  	return TCL_OK
 50640  }
 50641  
 50642  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 50643  	tcl.XTcl_CreateCommand(tls, interp, ts+34566, *(*uintptr)(unsafe.Pointer(&struct {
 50644  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50645  	}{md5_cmd})),
 50646  		*(*uintptr)(unsafe.Pointer(&struct {
 50647  			f func(*libc.TLS, uintptr, uintptr)
 50648  		}{MD5DigestToBase16})), uintptr(0))
 50649  	tcl.XTcl_CreateCommand(tls, interp, ts+34570, *(*uintptr)(unsafe.Pointer(&struct {
 50650  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50651  	}{md5_cmd})),
 50652  		*(*uintptr)(unsafe.Pointer(&struct {
 50653  			f func(*libc.TLS, uintptr, uintptr)
 50654  		}{MD5DigestToBase10x8})), uintptr(0))
 50655  	tcl.XTcl_CreateCommand(tls, interp, ts+34579, *(*uintptr)(unsafe.Pointer(&struct {
 50656  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50657  	}{md5file_cmd})),
 50658  		*(*uintptr)(unsafe.Pointer(&struct {
 50659  			f func(*libc.TLS, uintptr, uintptr)
 50660  		}{MD5DigestToBase16})), uintptr(0))
 50661  	tcl.XTcl_CreateCommand(tls, interp, ts+34587, *(*uintptr)(unsafe.Pointer(&struct {
 50662  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50663  	}{md5file_cmd})),
 50664  		*(*uintptr)(unsafe.Pointer(&struct {
 50665  			f func(*libc.TLS, uintptr, uintptr)
 50666  		}{MD5DigestToBase10x8})), uintptr(0))
 50667  	return TCL_OK
 50668  }
 50669  
 50670  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50671  	var p uintptr
 50672  	var i int32
 50673  	if argc < 1 {
 50674  		return
 50675  	}
 50676  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50677  	if p == uintptr(0) {
 50678  		return
 50679  	}
 50680  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 50681  		MD5Init(tls, p)
 50682  	}
 50683  	for i = 0; i < argc; i++ {
 50684  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 50685  		if zData != 0 {
 50686  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 50687  		}
 50688  	}
 50689  }
 50690  
 50691  func md5finalize(tls *libc.TLS, context uintptr) {
 50692  	bp := tls.Alloc(49)
 50693  	defer tls.Free(49)
 50694  
 50695  	var p uintptr
 50696  
 50697  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50698  	MD5Final(tls, bp, p)
 50699  	MD5DigestToBase16(tls, bp, bp+16)
 50700  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 50701  }
 50702  
 50703  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 50704  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34600, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 50705  		*(*uintptr)(unsafe.Pointer(&struct {
 50706  			f func(*libc.TLS, uintptr, int32, uintptr)
 50707  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 50708  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34600, -1)
 50709  	return rc
 50710  }
 50711  
 50712  type multiplexGroup1 = struct {
 50713  	FaReal       uintptr
 50714  	FnReal       int32
 50715  	F__ccgo_pad1 [4]byte
 50716  	FzName       uintptr
 50717  	FnName       int32
 50718  	Fflags       int32
 50719  	FszChunk     uint32
 50720  	FbEnabled    uint8
 50721  	FbTruncate   uint8
 50722  	F__ccgo_pad2 [2]byte
 50723  }
 50724  
 50725  type multiplexGroup = multiplexGroup1
 50726  type multiplexConn1 = struct {
 50727  	Fbase   sqlite3_file
 50728  	FpGroup uintptr
 50729  }
 50730  
 50731  type multiplexConn = multiplexConn1
 50732  
 50733  type multiplexReal = struct {
 50734  	Fp uintptr
 50735  	Fz uintptr
 50736  }
 50737  
 50738  var gMultiplex struct {
 50739  	FpOrigVfs      uintptr
 50740  	FsThisVfs      sqlite3_vfs
 50741  	FsIoMethodsV1  sqlite3_io_methods
 50742  	FsIoMethodsV2  sqlite3_io_methods
 50743  	FisInitialized int32
 50744  	F__ccgo_pad1   [4]byte
 50745  }
 50746  
 50747  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 50748  	var z2 uintptr = z
 50749  	if z == uintptr(0) {
 50750  		return 0
 50751  	}
 50752  	for *(*uint8)(unsafe.Pointer(z2)) != 0 {
 50753  		z2++
 50754  	}
 50755  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 50756  }
 50757  
 50758  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 50759  	bp := tls.Alloc(8)
 50760  	defer tls.Free(8)
 50761  
 50762  	var n int32 = nBase
 50763  	libc.Xmemcpy(tls, zOut, zBase, uint64(n+1))
 50764  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 50765  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34607, libc.VaList(bp, iChunk))
 50766  		n = n + 3
 50767  	}
 50768  
 50769  	*(*uint8)(unsafe.Pointer(zOut + uintptr(n+1))) = uint8(0)
 50770  }
 50771  
 50772  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 50773  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 50774  		var p uintptr
 50775  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(iChunk+1)*uint64(unsafe.Sizeof(multiplexReal{})))
 50776  		if p == uintptr(0) {
 50777  			return SQLITE_NOMEM
 50778  		}
 50779  		libc.Xmemset(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0, uint64(unsafe.Sizeof(multiplexReal{}))*uint64(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal))
 50780  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 50781  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 50782  	}
 50783  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 50784  		var z uintptr
 50785  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 50786  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 50787  		if z == uintptr(0) {
 50788  			return SQLITE_NOMEM
 50789  		}
 50790  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 50791  		(*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))
 50792  		sqlite3.Xsqlite3_free(tls, z)
 50793  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 50794  			return SQLITE_NOMEM
 50795  		}
 50796  	}
 50797  	return SQLITE_OK
 50798  }
 50799  
 50800  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 50801  	bp := tls.Alloc(20)
 50802  	defer tls.Free(20)
 50803  
 50804  	var pSubOpen uintptr = uintptr(0)
 50805  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50806  
 50807  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 50808  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp) == uintptr(0) {
 50809  		var flags int32
 50810  
 50811  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 50812  		if createFlag != 0 {
 50813  			flags = flags | SQLITE_OPEN_CREATE
 50814  		} else if iChunk == 0 {
 50815  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 50816  			return uintptr(0)
 50817  		} else {
 50818  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50819  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50820  			})(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,
 50821  				SQLITE_ACCESS_EXISTS, bp+16)
 50822  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 50823  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 50824  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34612,
 50825  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 50826  				}
 50827  				return uintptr(0)
 50828  			}
 50829  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 50830  		}
 50831  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 50832  		if pSubOpen == uintptr(0) {
 50833  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 50834  			return uintptr(0)
 50835  		}
 50836  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = pSubOpen
 50837  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50838  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 50839  		})(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,
 50840  			flags, pOutFlags)
 50841  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 50842  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34646,
 50843  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 50844  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 50845  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = uintptr(0)
 50846  			return uintptr(0)
 50847  		}
 50848  	}
 50849  	return pSubOpen
 50850  }
 50851  
 50852  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 50853  	bp := tls.Alloc(8)
 50854  	defer tls.Free(8)
 50855  
 50856  	var pSub uintptr
 50857  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 50858  
 50859  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 50860  		return int64(0)
 50861  	}
 50862  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 50863  	if pSub == uintptr(0) {
 50864  		return int64(0)
 50865  	}
 50866  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50867  		f func(*libc.TLS, uintptr, uintptr) int32
 50868  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 50869  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 50870  }
 50871  
 50872  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50873  	bp := tls.Alloc(4)
 50874  	defer tls.Free(4)
 50875  
 50876  	var rc int32 = SQLITE_OK
 50877  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 50878  	var op int32 = 0
 50879  
 50880  	if !(db != 0) || argc != 2 {
 50881  		rc = SQLITE_ERROR
 50882  	} else {
 50883  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 50884  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 50885  
 50886  		switch op {
 50887  		case 1:
 50888  			op = MULTIPLEX_CTRL_ENABLE
 50889  			break
 50890  			fallthrough
 50891  		case 2:
 50892  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 50893  			break
 50894  			fallthrough
 50895  		case 3:
 50896  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 50897  			break
 50898  			fallthrough
 50899  		default:
 50900  			rc = SQLITE_NOTFOUND
 50901  			break
 50902  		}
 50903  	}
 50904  	if rc == SQLITE_OK {
 50905  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 50906  	}
 50907  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 50908  }
 50909  
 50910  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 50911  	var rc int32
 50912  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34678, 2, SQLITE_ANY,
 50913  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 50914  			f func(*libc.TLS, uintptr, int32, uintptr)
 50915  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 50916  	return rc
 50917  }
 50918  
 50919  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 50920  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp
 50921  	if pSubOpen != 0 {
 50922  		(*struct {
 50923  			f func(*libc.TLS, uintptr) int32
 50924  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 50925  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz != 0 {
 50926  			(*struct {
 50927  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 50928  			})(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)
 50929  		}
 50930  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp)
 50931  	}
 50932  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz)
 50933  	libc.Xmemset(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0, uint64(unsafe.Sizeof(multiplexReal{})))
 50934  }
 50935  
 50936  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 50937  	var i int32
 50938  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 50939  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 50940  	}
 50941  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 50942  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 50943  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 50944  }
 50945  
 50946  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 50947  	bp := tls.Alloc(20)
 50948  	defer tls.Free(20)
 50949  
 50950  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50951  	var pMultiplexOpen uintptr
 50952  	var pGroup uintptr = uintptr(0)
 50953  	var pSubOpen uintptr = uintptr(0)
 50954  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50955  	var nName int32 = 0
 50956  	var sz int32 = 0
 50957  	var zToFree uintptr = uintptr(0)
 50958  
 50959  	_ = pVfs
 50960  	libc.Xmemset(tls, pConn, 0, uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile))
 50961  
 50962  	pMultiplexOpen = pConn
 50963  
 50964  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50965  		if zName != 0 {
 50966  			nName = multiplexStrlen30(tls, zName)
 50967  		} else {
 50968  			nName = 0
 50969  		}
 50970  		sz = int32(uint64(unsafe.Sizeof(multiplexGroup{})) +
 50971  			uint64(nName) + uint64(1))
 50972  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 50973  		if pGroup == uintptr(0) {
 50974  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 50975  		}
 50976  	}
 50977  
 50978  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50979  		var zUri uintptr
 50980  		if flags&SQLITE_OPEN_URI != 0 {
 50981  			zUri = zName
 50982  		} else {
 50983  			zUri = uintptr(0)
 50984  		}
 50985  
 50986  		libc.Xmemset(tls, pGroup, 0, uint64(sz))
 50987  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 50988  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 50989  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18304,
 50990  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 50991  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34696,
 50992  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 50993  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 50994  		if zName != 0 {
 50995  			var p uintptr = pGroup + 1*40
 50996  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 50997  			libc.Xmemcpy(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint64(nName+1))
 50998  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 50999  		}
 51000  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 51001  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 51002  				*(*uint32)(unsafe.Pointer(pGroup + 32)) += uint32(65536)
 51003  			}
 51004  		}
 51005  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 51006  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 51007  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51008  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 51009  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51010  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 51011  			}
 51012  		}
 51013  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51014  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51015  				f func(*libc.TLS, uintptr, uintptr) int32
 51016  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+8)
 51017  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 51018  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 51019  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 51020  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
 51021  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 51022  						var iChunk int32 = 1
 51023  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 51024  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51025  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51026  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 51027  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, SQLITE_ACCESS_EXISTS, bp+16)
 51028  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 51029  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51030  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 51031  								})(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)
 51032  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51033  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 51034  								}
 51035  							}
 51036  						}
 51037  					}
 51038  				} else {
 51039  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51040  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51041  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*16)).Fz,
 51042  						SQLITE_ACCESS_EXISTS, bp+16)
 51043  					*(*int32)(unsafe.Pointer(bp + 16)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 51044  					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) &&
 51045  						*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 51046  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
 51047  					} 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) {
 51048  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 51049  					}
 51050  				}
 51051  			}
 51052  		}
 51053  
 51054  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51055  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 51056  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 176
 51057  			} else {
 51058  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 328
 51059  			}
 51060  		} else {
 51061  			multiplexFreeComponents(tls, pGroup)
 51062  			sqlite3.Xsqlite3_free(tls, pGroup)
 51063  		}
 51064  	}
 51065  	sqlite3.Xsqlite3_free(tls, zToFree)
 51066  	return *(*int32)(unsafe.Pointer(bp))
 51067  }
 51068  
 51069  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 51070  	bp := tls.Alloc(4)
 51071  	defer tls.Free(4)
 51072  
 51073  	var rc int32
 51074  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51075  	rc = (*struct {
 51076  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 51077  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 51078  	if rc == SQLITE_OK {
 51079  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 51080  		var z uintptr
 51081  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 51082  		if z == uintptr(0) {
 51083  			rc = SQLITE_IOERR | int32(12)<<8
 51084  		} else {
 51085  			var iChunk int32 = 0
 51086  
 51087  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 51088  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 51089  				rc = (*struct {
 51090  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51091  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 51092  			}
 51093  			for rc == SQLITE_OK && iChunk > 1 {
 51094  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 51095  				rc = (*struct {
 51096  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 51097  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 51098  			}
 51099  			if rc == SQLITE_OK {
 51100  				iChunk = 0
 51101  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 51102  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 51103  					rc = (*struct {
 51104  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51105  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 51106  				}
 51107  				for rc == SQLITE_OK && iChunk > 1 {
 51108  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 51109  					rc = (*struct {
 51110  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 51111  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 51112  				}
 51113  			}
 51114  		}
 51115  		sqlite3.Xsqlite3_free(tls, z)
 51116  	}
 51117  	return rc
 51118  }
 51119  
 51120  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 51121  	return (*struct {
 51122  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51123  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 51124  }
 51125  
 51126  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 51127  	return (*struct {
 51128  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51129  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 51130  }
 51131  
 51132  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 51133  	return (*struct {
 51134  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51135  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 51136  }
 51137  
 51138  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 51139  	(*struct {
 51140  		f func(*libc.TLS, uintptr, int32, uintptr)
 51141  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51142  }
 51143  
 51144  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 51145  	return (*struct {
 51146  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51147  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51148  }
 51149  
 51150  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 51151  	(*struct {
 51152  		f func(*libc.TLS, uintptr, uintptr)
 51153  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 51154  }
 51155  
 51156  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 51157  	return (*struct {
 51158  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51159  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51160  }
 51161  
 51162  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 51163  	return (*struct {
 51164  		f func(*libc.TLS, uintptr, int32) int32
 51165  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 51166  }
 51167  
 51168  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 51169  	return (*struct {
 51170  		f func(*libc.TLS, uintptr, uintptr) int32
 51171  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 51172  }
 51173  
 51174  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 51175  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 51176  		return (*struct {
 51177  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 51178  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 51179  	} else {
 51180  		return 0
 51181  	}
 51182  	return int32(0)
 51183  }
 51184  
 51185  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 51186  	return (*struct {
 51187  		f func(*libc.TLS, uintptr, uintptr) int32
 51188  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 51189  }
 51190  
 51191  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 51192  	var p uintptr = pConn
 51193  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51194  	var rc int32 = SQLITE_OK
 51195  	multiplexFreeComponents(tls, pGroup)
 51196  	sqlite3.Xsqlite3_free(tls, pGroup)
 51197  	return rc
 51198  }
 51199  
 51200  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 51201  	bp := tls.Alloc(4)
 51202  	defer tls.Free(4)
 51203  
 51204  	var p uintptr = pConn
 51205  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51206  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51207  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51208  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51209  		if pSubOpen == uintptr(0) {
 51210  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 51211  		} else {
 51212  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51213  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51214  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 51215  		}
 51216  	} else {
 51217  		for iAmt > 0 {
 51218  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51219  			var pSubOpen uintptr
 51220  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 51221  			if pSubOpen != 0 {
 51222  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 51223  				if extra < 0 {
 51224  					extra = 0
 51225  				}
 51226  				iAmt = iAmt - extra
 51227  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51228  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51229  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 51230  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51231  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 51232  					break
 51233  				}
 51234  				pBuf = pBuf + uintptr(iAmt)
 51235  				iOfst = iOfst + sqlite3_int64(iAmt)
 51236  				iAmt = extra
 51237  			} else {
 51238  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 51239  				break
 51240  			}
 51241  		}
 51242  	}
 51243  
 51244  	return *(*int32)(unsafe.Pointer(bp))
 51245  }
 51246  
 51247  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 51248  	bp := tls.Alloc(4)
 51249  	defer tls.Free(4)
 51250  
 51251  	var p uintptr = pConn
 51252  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51253  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51254  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51255  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51256  		if pSubOpen == uintptr(0) {
 51257  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 51258  		} else {
 51259  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51260  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51261  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 51262  		}
 51263  	} else {
 51264  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 51265  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51266  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 51267  			if pSubOpen != 0 {
 51268  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 51269  				if extra < 0 {
 51270  					extra = 0
 51271  				}
 51272  				iAmt = iAmt - extra
 51273  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51274  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51275  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 51276  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51277  				pBuf = pBuf + uintptr(iAmt)
 51278  				iOfst = iOfst + sqlite3_int64(iAmt)
 51279  				iAmt = extra
 51280  			}
 51281  		}
 51282  	}
 51283  	return *(*int32)(unsafe.Pointer(bp))
 51284  }
 51285  
 51286  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 51287  	bp := tls.Alloc(4)
 51288  	defer tls.Free(4)
 51289  
 51290  	var p uintptr = pConn
 51291  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51292  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51293  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51294  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51295  		if pSubOpen == uintptr(0) {
 51296  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 51297  		} else {
 51298  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51299  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51300  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 51301  		}
 51302  	} else {
 51303  		var i int32
 51304  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51305  		var pSubOpen uintptr
 51306  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51307  
 51308  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 51309  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51310  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 51311  			} else {
 51312  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 51313  				if pSubOpen != 0 {
 51314  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51315  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51316  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 51317  				}
 51318  			}
 51319  		}
 51320  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51321  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 51322  			if pSubOpen != 0 {
 51323  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51324  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51325  				})(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))
 51326  			}
 51327  		}
 51328  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 51329  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 51330  		}
 51331  	}
 51332  	return *(*int32)(unsafe.Pointer(bp))
 51333  }
 51334  
 51335  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 51336  	var p uintptr = pConn
 51337  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51338  	var rc int32 = SQLITE_OK
 51339  	var i int32
 51340  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 51341  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*16)).Fp
 51342  		if pSubOpen != 0 {
 51343  			var rc2 int32 = (*struct {
 51344  				f func(*libc.TLS, uintptr, int32) int32
 51345  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 51346  			if rc2 != SQLITE_OK {
 51347  				rc = rc2
 51348  			}
 51349  		}
 51350  	}
 51351  	return rc
 51352  }
 51353  
 51354  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 51355  	bp := tls.Alloc(4)
 51356  	defer tls.Free(4)
 51357  
 51358  	var p uintptr = pConn
 51359  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51360  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51361  	var i int32
 51362  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51363  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51364  		if pSubOpen == uintptr(0) {
 51365  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 51366  		} else {
 51367  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51368  				f func(*libc.TLS, uintptr, uintptr) int32
 51369  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 51370  		}
 51371  	} else {
 51372  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 51373  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 51374  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 51375  			if sz == int64(0) {
 51376  				break
 51377  			}
 51378  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 51379  		}
 51380  	}
 51381  	return *(*int32)(unsafe.Pointer(bp))
 51382  }
 51383  
 51384  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51385  	bp := tls.Alloc(4)
 51386  	defer tls.Free(4)
 51387  
 51388  	var p uintptr = pConn
 51389  
 51390  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51391  	if pSubOpen != 0 {
 51392  		return (*struct {
 51393  			f func(*libc.TLS, uintptr, int32) int32
 51394  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 51395  	}
 51396  	return SQLITE_BUSY
 51397  }
 51398  
 51399  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51400  	bp := tls.Alloc(4)
 51401  	defer tls.Free(4)
 51402  
 51403  	var p uintptr = pConn
 51404  
 51405  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51406  	if pSubOpen != 0 {
 51407  		return (*struct {
 51408  			f func(*libc.TLS, uintptr, int32) int32
 51409  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 51410  	}
 51411  	return SQLITE_IOERR | int32(8)<<8
 51412  }
 51413  
 51414  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 51415  	bp := tls.Alloc(4)
 51416  	defer tls.Free(4)
 51417  
 51418  	var p uintptr = pConn
 51419  
 51420  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51421  	if pSubOpen != 0 {
 51422  		return (*struct {
 51423  			f func(*libc.TLS, uintptr, uintptr) int32
 51424  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 51425  	}
 51426  	return SQLITE_IOERR | int32(14)<<8
 51427  }
 51428  
 51429  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 51430  	bp := tls.Alloc(44)
 51431  	defer tls.Free(44)
 51432  
 51433  	var p uintptr = pConn
 51434  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51435  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 51436  	var pSubOpen uintptr
 51437  
 51438  	if !(gMultiplex.FisInitialized != 0) {
 51439  		return SQLITE_MISUSE
 51440  	}
 51441  	switch op {
 51442  	case MULTIPLEX_CTRL_ENABLE:
 51443  		if pArg != 0 {
 51444  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 51445  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 51446  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51447  		}
 51448  		break
 51449  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 51450  		if pArg != 0 {
 51451  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 51452  			if szChunk < uint32(1) {
 51453  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 51454  			} else {
 51455  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 51456  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 51457  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 51458  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51459  			}
 51460  		}
 51461  		break
 51462  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 51463  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51464  		break
 51465  	case SQLITE_FCNTL_SIZE_HINT:
 51466  		fallthrough
 51467  	case SQLITE_FCNTL_CHUNK_SIZE:
 51468  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51469  		break
 51470  	case SQLITE_FCNTL_PRAGMA:
 51471  		{
 51472  			var aFcntl uintptr = pArg
 51473  
 51474  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34706, 10) == 0 {
 51475  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 51476  				multiplexFileSize(tls, pConn, bp+32)
 51477  
 51478  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34717) == 0 {
 51479  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)) != 0 && *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*8)))) != 0 {
 51480  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4178) == 0 ||
 51481  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+28899) == 0 {
 51482  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 51483  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4542) == 0 ||
 51484  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+14193) == 0 {
 51485  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 51486  						}
 51487  					}
 51488  
 51489  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 51490  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51491  							return ts + 4178
 51492  						}
 51493  						return ts + 4542
 51494  					}(), 0)
 51495  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51496  					break
 51497  				}
 51498  
 51499  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34736) == 0 {
 51500  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 51501  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51502  					break
 51503  				}
 51504  
 51505  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34754) == 0 &&
 51506  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 51507  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51508  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51509  					break
 51510  				}
 51511  
 51512  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34774) == 0 {
 51513  					var n int32 = 0
 51514  					var ii int32
 51515  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 51516  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*16)).Fp != uintptr(0) {
 51517  							n++
 51518  						}
 51519  					}
 51520  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 51521  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51522  					break
 51523  				}
 51524  			}
 51525  
 51526  		}
 51527  		fallthrough
 51528  	default:
 51529  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 51530  		if pSubOpen != 0 {
 51531  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 51532  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 51533  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 51534  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 51535  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34794, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 51536  			}
 51537  		}
 51538  		break
 51539  	}
 51540  	return *(*int32)(unsafe.Pointer(bp + 40))
 51541  }
 51542  
 51543  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 51544  	bp := tls.Alloc(4)
 51545  	defer tls.Free(4)
 51546  
 51547  	var p uintptr = pConn
 51548  
 51549  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51550  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 51551  		return (*struct {
 51552  			f func(*libc.TLS, uintptr) int32
 51553  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 51554  	}
 51555  	return DEFAULT_SECTOR_SIZE
 51556  }
 51557  
 51558  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 51559  	bp := tls.Alloc(4)
 51560  	defer tls.Free(4)
 51561  
 51562  	var p uintptr = pConn
 51563  
 51564  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51565  	if pSubOpen != 0 {
 51566  		return (*struct {
 51567  			f func(*libc.TLS, uintptr) int32
 51568  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 51569  	}
 51570  	return 0
 51571  }
 51572  
 51573  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 51574  	bp := tls.Alloc(4)
 51575  	defer tls.Free(4)
 51576  
 51577  	var p uintptr = pConn
 51578  
 51579  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51580  	if pSubOpen != 0 {
 51581  		return (*struct {
 51582  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51583  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 51584  	}
 51585  	return SQLITE_IOERR
 51586  }
 51587  
 51588  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 51589  	bp := tls.Alloc(4)
 51590  	defer tls.Free(4)
 51591  
 51592  	var p uintptr = pConn
 51593  
 51594  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51595  	if pSubOpen != 0 {
 51596  		return (*struct {
 51597  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51598  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 51599  	}
 51600  	return SQLITE_BUSY
 51601  }
 51602  
 51603  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 51604  	bp := tls.Alloc(4)
 51605  	defer tls.Free(4)
 51606  
 51607  	var p uintptr = pConn
 51608  
 51609  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51610  	if pSubOpen != 0 {
 51611  		(*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)
 51612  	}
 51613  }
 51614  
 51615  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 51616  	bp := tls.Alloc(4)
 51617  	defer tls.Free(4)
 51618  
 51619  	var p uintptr = pConn
 51620  
 51621  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51622  	if pSubOpen != 0 {
 51623  		return (*struct {
 51624  			f func(*libc.TLS, uintptr, int32) int32
 51625  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 51626  	}
 51627  	return SQLITE_OK
 51628  }
 51629  
 51630  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 51631  	var pOrigVfs uintptr
 51632  	if gMultiplex.FisInitialized != 0 {
 51633  		return SQLITE_MISUSE
 51634  	}
 51635  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 51636  	if pOrigVfs == uintptr(0) {
 51637  		return SQLITE_ERROR
 51638  	}
 51639  
 51640  	gMultiplex.FisInitialized = 1
 51641  	gMultiplex.FpOrigVfs = pOrigVfs
 51642  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 51643  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(multiplexConn{})))
 51644  	gMultiplex.FsThisVfs.FzName = ts + 34807
 51645  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51646  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51647  	}{multiplexOpen}))
 51648  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 51649  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 51650  	}{multiplexDelete}))
 51651  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 51652  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51653  	}{multiplexAccess}))
 51654  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 51655  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51656  	}{multiplexFullPathname}))
 51657  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51658  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51659  	}{multiplexDlOpen}))
 51660  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 51661  		f func(*libc.TLS, uintptr, int32, uintptr)
 51662  	}{multiplexDlError}))
 51663  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 51664  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51665  	}{multiplexDlSym}))
 51666  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 51667  		f func(*libc.TLS, uintptr, uintptr)
 51668  	}{multiplexDlClose}))
 51669  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 51670  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51671  	}{multiplexRandomness}))
 51672  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 51673  		f func(*libc.TLS, uintptr, int32) int32
 51674  	}{multiplexSleep}))
 51675  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 51676  		f func(*libc.TLS, uintptr, uintptr) int32
 51677  	}{multiplexCurrentTime}))
 51678  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 51679  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51680  	}{multiplexGetLastError}))
 51681  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 51682  		f func(*libc.TLS, uintptr, uintptr) int32
 51683  	}{multiplexCurrentTimeInt64}))
 51684  
 51685  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 51686  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 51687  		f func(*libc.TLS, uintptr) int32
 51688  	}{multiplexClose}))
 51689  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 51690  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51691  	}{multiplexRead}))
 51692  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 51693  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51694  	}{multiplexWrite}))
 51695  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 51696  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51697  	}{multiplexTruncate}))
 51698  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 51699  		f func(*libc.TLS, uintptr, int32) int32
 51700  	}{multiplexSync}))
 51701  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 51702  		f func(*libc.TLS, uintptr, uintptr) int32
 51703  	}{multiplexFileSize}))
 51704  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 51705  		f func(*libc.TLS, uintptr, int32) int32
 51706  	}{multiplexLock}))
 51707  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 51708  		f func(*libc.TLS, uintptr, int32) int32
 51709  	}{multiplexUnlock}))
 51710  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 51711  		f func(*libc.TLS, uintptr, uintptr) int32
 51712  	}{multiplexCheckReservedLock}))
 51713  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 51714  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51715  	}{multiplexFileControl}))
 51716  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 51717  		f func(*libc.TLS, uintptr) int32
 51718  	}{multiplexSectorSize}))
 51719  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 51720  		f func(*libc.TLS, uintptr) int32
 51721  	}{multiplexDeviceCharacteristics}))
 51722  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 51723  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 51724  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 51725  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51726  	}{multiplexShmMap}))
 51727  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 51728  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51729  	}{multiplexShmLock}))
 51730  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 51731  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 51732  		f func(*libc.TLS, uintptr, int32) int32
 51733  	}{multiplexShmUnmap}))
 51734  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+8, makeDefault)
 51735  
 51736  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 51737  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 51738  	}{multiplexFuncInit})))
 51739  
 51740  	return SQLITE_OK
 51741  }
 51742  
 51743  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 51744  	var rc int32 = SQLITE_OK
 51745  	if gMultiplex.FisInitialized == 0 {
 51746  		return SQLITE_MISUSE
 51747  	}
 51748  	gMultiplex.FisInitialized = 0
 51749  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+8)
 51750  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint64(unsafe.Sizeof(gMultiplex)))
 51751  	return rc
 51752  }
 51753  
 51754  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51755  	bp := tls.Alloc(4)
 51756  	defer tls.Free(4)
 51757  
 51758  	var zName uintptr
 51759  
 51760  	var rc int32
 51761  
 51762  	_ = clientData
 51763  
 51764  	if objc != 3 {
 51765  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 51766  		return TCL_ERROR
 51767  	}
 51768  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51769  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 51770  		return TCL_ERROR
 51771  	}
 51772  	if int32(*(*uint8)(unsafe.Pointer(zName))) == 0 {
 51773  		zName = uintptr(0)
 51774  	}
 51775  
 51776  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 51777  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51778  
 51779  	return TCL_OK
 51780  }
 51781  
 51782  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51783  	var rc int32
 51784  
 51785  	_ = clientData
 51786  
 51787  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+34834) != 0 {
 51788  		objc = 3
 51789  	}
 51790  	if objc != 1 && objc != 2 {
 51791  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34841)
 51792  		return TCL_ERROR
 51793  	}
 51794  
 51795  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 51796  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51797  
 51798  	return TCL_OK
 51799  }
 51800  
 51801  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 51802  	bp := tls.Alloc(176)
 51803  	defer tls.Free(176)
 51804  
 51805  	var rc int32
 51806  
 51807  	var db uintptr
 51808  	*(*int32)(unsafe.Pointer(bp + 172)) = 0
 51809  	var pArg uintptr = uintptr(0)
 51810  
 51811  	*(*[4]struct {
 51812  		FzName   uintptr
 51813  		Fop      int32
 51814  		Fargtype int32
 51815  	})(unsafe.Pointer(bp + 104)) = [4]struct {
 51816  		FzName   uintptr
 51817  		Fop      int32
 51818  		Fargtype int32
 51819  	}{
 51820  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 51821  		{FzName: ts + 34850, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 51822  		{FzName: ts + 34861, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 51823  		{},
 51824  	}
 51825  
 51826  	if objc != 5 {
 51827  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34872)
 51828  		return TCL_ERROR
 51829  	}
 51830  
 51831  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) {
 51832  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+34908, 0))
 51833  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+11945, 0))
 51834  		return TCL_ERROR
 51835  	} else {
 51836  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 51837  	}
 51838  
 51839  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 51840  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+104, int32(unsafe.Sizeof(struct {
 51841  			FzName   uintptr
 51842  			Fop      int32
 51843  			Fargtype int32
 51844  		}{})), ts+2014, 0, bp+168)
 51845  	if rc != TCL_OK {
 51846  		return rc
 51847  	}
 51848  
 51849  	switch (*struct {
 51850  		FzName   uintptr
 51851  		Fop      int32
 51852  		Fargtype int32
 51853  	})(unsafe.Pointer(bp + 104 + uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fargtype {
 51854  	case 1:
 51855  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+172) != 0 {
 51856  			return TCL_ERROR
 51857  		}
 51858  		pArg = bp + 172
 51859  		break
 51860  	default:
 51861  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 51862  		return TCL_ERROR
 51863  	}
 51864  
 51865  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), (*struct {
 51866  		FzName   uintptr
 51867  		Fop      int32
 51868  		Fargtype int32
 51869  	})(unsafe.Pointer(bp+104+uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fop, pArg)
 51870  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51871  	if rc == SQLITE_OK {
 51872  		return TCL_OK
 51873  	}
 51874  	return TCL_ERROR
 51875  }
 51876  
 51877  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 51878  	var i int32
 51879  
 51880  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd7))/uint64(unsafe.Sizeof(struct {
 51881  		FzName uintptr
 51882  		FxProc uintptr
 51883  	}{})); i++ {
 51884  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 51885  	}
 51886  
 51887  	return TCL_OK
 51888  }
 51889  
 51890  var aCmd7 = [3]struct {
 51891  	FzName uintptr
 51892  	FxProc uintptr
 51893  }{
 51894  	{FzName: ts + 34940, FxProc: 0},
 51895  	{FzName: ts + 34969, FxProc: 0},
 51896  	{FzName: ts + 34996, FxProc: 0},
 51897  }
 51898  
 51899  type sqlite3_mutex = sqlite3_mutex1
 51900  
 51901  var aName = [15]uintptr{
 51902  	ts + 35022, ts + 35027, ts + 35037, ts + 35049,
 51903  	ts + 35060, ts + 35072, ts + 35084, ts + 35095,
 51904  	ts + 35107, ts + 35119, ts + 35131, ts + 35143,
 51905  	ts + 35155, ts + 35167, uintptr(0),
 51906  }
 51907  
 51908  type test_mutex_globals = struct {
 51909  	FisInstalled int32
 51910  	FdisableInit int32
 51911  	FdisableTry  int32
 51912  	FisInit      int32
 51913  	Fm           sqlite3_mutex_methods
 51914  	FaCounter    [14]int32
 51915  	FaStatic     [12]sqlite3_mutex
 51916  }
 51917  
 51918  var g3 = test_mutex_globals{}
 51919  
 51920  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 51921  	return (*struct {
 51922  		f func(*libc.TLS, uintptr) int32
 51923  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51924  }
 51925  
 51926  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 51927  	return (*struct {
 51928  		f func(*libc.TLS, uintptr) int32
 51929  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51930  }
 51931  
 51932  func counterMutexInit(tls *libc.TLS) int32 {
 51933  	var rc int32
 51934  	if g3.FdisableInit != 0 {
 51935  		return g3.FdisableInit
 51936  	}
 51937  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 51938  	g3.FisInit = 1
 51939  	return rc
 51940  }
 51941  
 51942  func counterMutexEnd(tls *libc.TLS) int32 {
 51943  	g3.FisInit = 0
 51944  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 51945  }
 51946  
 51947  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 51948  	var pReal uintptr
 51949  	var pRet uintptr = uintptr(0)
 51950  
 51951  	pReal = (*struct {
 51952  		f func(*libc.TLS, int32) uintptr
 51953  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 51954  	if !(pReal != 0) {
 51955  		return uintptr(0)
 51956  	}
 51957  
 51958  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 51959  		pRet = libc.Xmalloc(tls, uint64(unsafe.Sizeof(sqlite3_mutex{})))
 51960  	} else {
 51961  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 51962  
 51963  		pRet = uintptr(unsafe.Pointer(&g3)) + 144 + uintptr(eStaticType)*16
 51964  	}
 51965  
 51966  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 51967  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 51968  	return pRet
 51969  }
 51970  
 51971  func counterMutexFree(tls *libc.TLS, p uintptr) {
 51972  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51973  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 51974  		libc.Xfree(tls, p)
 51975  	}
 51976  }
 51977  
 51978  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 51979  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51980  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51981  }
 51982  
 51983  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 51984  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51985  	if g3.FdisableTry != 0 {
 51986  		return SQLITE_BUSY
 51987  	}
 51988  	return (*struct {
 51989  		f func(*libc.TLS, uintptr) int32
 51990  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51991  }
 51992  
 51993  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 51994  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51995  }
 51996  
 51997  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51998  	var rc int32
 51999  
 52000  	if objc != 1 {
 52001  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52002  		return TCL_ERROR
 52003  	}
 52004  
 52005  	rc = sqlite3.Xsqlite3_shutdown(tls)
 52006  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52007  	return TCL_OK
 52008  }
 52009  
 52010  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52011  	var rc int32
 52012  
 52013  	if objc != 1 {
 52014  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52015  		return TCL_ERROR
 52016  	}
 52017  
 52018  	rc = sqlite3.Xsqlite3_initialize(tls)
 52019  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52020  	return TCL_OK
 52021  }
 52022  
 52023  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52024  	bp := tls.Alloc(136)
 52025  	defer tls.Free(136)
 52026  
 52027  	var rc int32 = SQLITE_OK
 52028  
 52029  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 64)) = sqlite3_mutex_methods{
 52030  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 52031  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 52032  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 52033  			f func(*libc.TLS, int32) uintptr
 52034  		}{counterMutexAlloc})),
 52035  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 52036  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 52037  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 52038  			f func(*libc.TLS, uintptr) int32
 52039  		}{counterMutexTry})),
 52040  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 52041  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 52042  			f func(*libc.TLS, uintptr) int32
 52043  		}{counterMutexHeld})),
 52044  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 52045  			f func(*libc.TLS, uintptr) int32
 52046  		}{counterMutexNotheld})),
 52047  	}
 52048  
 52049  	if objc != 2 {
 52050  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 52051  		return TCL_ERROR
 52052  	}
 52053  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+56) {
 52054  		return TCL_ERROR
 52055  	}
 52056  
 52057  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 52058  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35179, 0))
 52059  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 52060  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 52061  				return ts + 35199
 52062  			}
 52063  			return ts + 35217
 52064  		}(), 0))
 52065  		return TCL_ERROR
 52066  	}
 52067  
 52068  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 52069  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 52070  		if rc == SQLITE_OK {
 52071  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+64))
 52072  		}
 52073  		g3.FdisableTry = 0
 52074  	} else {
 52075  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 52076  		libc.Xmemset(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint64(unsafe.Sizeof(sqlite3_mutex_methods{})))
 52077  	}
 52078  
 52079  	if rc == SQLITE_OK {
 52080  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 52081  	}
 52082  
 52083  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52084  	return TCL_OK
 52085  }
 52086  
 52087  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52088  	var pRet uintptr
 52089  	var ii int32
 52090  
 52091  	if objc != 1 {
 52092  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52093  		return TCL_ERROR
 52094  	}
 52095  
 52096  	pRet = tcl.XTcl_NewObj(tls)
 52097  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 52098  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 52099  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 52100  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4))))
 52101  	}
 52102  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 52103  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 52104  		var _objPtr uintptr = pRet
 52105  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 52106  			tcl.XTclFreeObj(tls, _objPtr)
 52107  		}
 52108  	}
 52109  
 52110  	return TCL_OK
 52111  }
 52112  
 52113  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52114  	var ii int32
 52115  
 52116  	if objc != 1 {
 52117  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52118  		return TCL_ERROR
 52119  	}
 52120  
 52121  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 52122  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4)) = 0
 52123  	}
 52124  	return TCL_OK
 52125  }
 52126  
 52127  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52128  	bp := tls.Alloc(124)
 52129  	defer tls.Free(124)
 52130  
 52131  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 52132  
 52133  	sqlite3.Xsqlite3_mutex_free(tls, p)
 52134  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]uint8{})), bp+24, ts+9889, libc.VaList(bp, p))
 52135  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 52136  	return TCL_OK
 52137  }
 52138  
 52139  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52140  	bp := tls.Alloc(68)
 52141  	defer tls.Free(68)
 52142  
 52143  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 52144  		{FzName: ts + 35231, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 52145  		{FzName: ts + 35244, FiValue: SQLITE_CONFIG_MULTITHREAD},
 52146  		{FzName: ts + 35256, FiValue: SQLITE_CONFIG_SERIALIZED},
 52147  		{},
 52148  	}
 52149  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 52150  
 52151  	var rc int32
 52152  
 52153  	if objc != 2 {
 52154  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 52155  		return TCL_ERROR
 52156  	}
 52157  
 52158  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, s, ts+17631, 0, bp+64) != 0 {
 52159  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+64) != 0 {
 52160  			return TCL_ERROR
 52161  		}
 52162  	} else {
 52163  		*(*int32)(unsafe.Pointer(bp + 64)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 64)))*16)).FiValue
 52164  	}
 52165  
 52166  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 64)), 0)
 52167  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 52168  	return TCL_OK
 52169  }
 52170  
 52171  type ConfigOption = struct {
 52172  	FzName       uintptr
 52173  	FiValue      int32
 52174  	F__ccgo_pad1 [4]byte
 52175  }
 52176  
 52177  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 52178  	bp := tls.Alloc(64)
 52179  	defer tls.Free(64)
 52180  
 52181  	var db uintptr
 52182  
 52183  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 52184  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 52185  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 52186  	} else {
 52187  		db = sqlite3TestTextToPtr(tls, zCmd)
 52188  	}
 52189  
 52190  	return db
 52191  }
 52192  
 52193  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 52194  	bp := tls.Alloc(4)
 52195  	defer tls.Free(4)
 52196  
 52197  	if tcl.XTcl_GetIndexFromObjStruct(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), int32(unsafe.Sizeof(uintptr(0))), ts+35267, 0, bp) != 0 {
 52198  		return uintptr(0)
 52199  	}
 52200  
 52201  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 52202  }
 52203  
 52204  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52205  	var pMutex uintptr
 52206  	if objc != 2 {
 52207  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 52208  		return TCL_ERROR
 52209  	}
 52210  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52211  	if !(pMutex != 0) {
 52212  		return TCL_ERROR
 52213  	}
 52214  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 52215  	return TCL_OK
 52216  }
 52217  
 52218  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52219  	var pMutex uintptr
 52220  	if objc != 2 {
 52221  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 52222  		return TCL_ERROR
 52223  	}
 52224  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52225  	if !(pMutex != 0) {
 52226  		return TCL_ERROR
 52227  	}
 52228  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 52229  	return TCL_OK
 52230  }
 52231  
 52232  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52233  	var db uintptr
 52234  	if objc != 2 {
 52235  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 52236  		return TCL_ERROR
 52237  	}
 52238  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52239  	if !(db != 0) {
 52240  		return TCL_ERROR
 52241  	}
 52242  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 52243  	return TCL_OK
 52244  }
 52245  
 52246  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52247  	var db uintptr
 52248  	if objc != 2 {
 52249  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 52250  		return TCL_ERROR
 52251  	}
 52252  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 52253  	if !(db != 0) {
 52254  		return TCL_ERROR
 52255  	}
 52256  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 52257  	return TCL_OK
 52258  }
 52259  
 52260  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 52261  	var i int32
 52262  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd8))/uint64(unsafe.Sizeof(struct {
 52263  		FzName uintptr
 52264  		FxProc uintptr
 52265  	}{})); i++ {
 52266  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 52267  	}
 52268  
 52269  	tcl.XTcl_LinkVar(tls, interp, ts+35278,
 52270  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 52271  	tcl.XTcl_LinkVar(tls, interp, ts+35297,
 52272  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 52273  	return SQLITE_OK
 52274  }
 52275  
 52276  var aCmd8 = [11]struct {
 52277  	FzName uintptr
 52278  	FxProc uintptr
 52279  }{
 52280  	{FzName: ts + 35315, FxProc: 0},
 52281  	{FzName: ts + 35332, FxProc: 0},
 52282  	{FzName: ts + 35351, FxProc: 0},
 52283  	{FzName: ts + 35366, FxProc: 0},
 52284  	{FzName: ts + 35385, FxProc: 0},
 52285  	{FzName: ts + 35404, FxProc: 0},
 52286  	{FzName: ts + 35419, FxProc: 0},
 52287  	{FzName: ts + 35434, FxProc: 0},
 52288  	{FzName: ts + 35454, FxProc: 0},
 52289  	{FzName: ts + 35477, FxProc: 0},
 52290  	{FzName: ts + 35497, FxProc: 0},
 52291  }
 52292  
 52293  type fs_real_file1 = struct {
 52294  	FpFile     uintptr
 52295  	FzName     uintptr
 52296  	FnDatabase int32
 52297  	FnJournal  int32
 52298  	FnBlob     int32
 52299  	FnRef      int32
 52300  	FpNext     uintptr
 52301  	FppThis    uintptr
 52302  }
 52303  
 52304  type fs_real_file = fs_real_file1
 52305  
 52306  type fs_file1 = struct {
 52307  	Fbase        sqlite3_file
 52308  	FeType       int32
 52309  	F__ccgo_pad1 [4]byte
 52310  	FpReal       uintptr
 52311  }
 52312  
 52313  type fs_file = fs_file1
 52314  
 52315  type tmp_file1 = struct {
 52316  	Fbase   sqlite3_file
 52317  	FnSize  int32
 52318  	FnAlloc int32
 52319  	FzAlloc uintptr
 52320  }
 52321  
 52322  type tmp_file = tmp_file1
 52323  
 52324  type fs_vfs_t1 = struct {
 52325  	Fbase      sqlite3_vfs
 52326  	FpFileList uintptr
 52327  	FpParent   uintptr
 52328  }
 52329  
 52330  type fs_vfs_t = fs_vfs_t1
 52331  
 52332  var fs_vfs = fs_vfs_t{
 52333  	Fbase: sqlite3_vfs{
 52334  		FiVersion:      1,
 52335  		FzName:         ts + 31055,
 52336  		FxOpen:         0,
 52337  		FxDelete:       0,
 52338  		FxAccess:       0,
 52339  		FxFullPathname: 0,
 52340  		FxDlOpen:       0,
 52341  		FxDlError:      0,
 52342  		FxDlSym:        0,
 52343  		FxDlClose:      0,
 52344  		FxRandomness:   0,
 52345  		FxSleep:        0,
 52346  		FxCurrentTime:  0,
 52347  	},
 52348  }
 52349  
 52350  var fs_io_methods = sqlite3_io_methods{
 52351  	FiVersion:               1,
 52352  	FxClose:                 0,
 52353  	FxRead:                  0,
 52354  	FxWrite:                 0,
 52355  	FxTruncate:              0,
 52356  	FxSync:                  0,
 52357  	FxFileSize:              0,
 52358  	FxLock:                  0,
 52359  	FxUnlock:                0,
 52360  	FxCheckReservedLock:     0,
 52361  	FxFileControl:           0,
 52362  	FxSectorSize:            0,
 52363  	FxDeviceCharacteristics: 0,
 52364  }
 52365  
 52366  var tmp_io_methods = sqlite3_io_methods{
 52367  	FiVersion:               1,
 52368  	FxClose:                 0,
 52369  	FxRead:                  0,
 52370  	FxWrite:                 0,
 52371  	FxTruncate:              0,
 52372  	FxSync:                  0,
 52373  	FxFileSize:              0,
 52374  	FxLock:                  0,
 52375  	FxUnlock:                0,
 52376  	FxCheckReservedLock:     0,
 52377  	FxFileControl:           0,
 52378  	FxSectorSize:            0,
 52379  	FxDeviceCharacteristics: 0,
 52380  }
 52381  
 52382  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 52383  	var pTmp uintptr = pFile
 52384  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 52385  	return SQLITE_OK
 52386  }
 52387  
 52388  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52389  	var pTmp uintptr = pFile
 52390  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 52391  		return SQLITE_IOERR | int32(2)<<8
 52392  	}
 52393  	libc.Xmemcpy(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint64(iAmt))
 52394  	return SQLITE_OK
 52395  }
 52396  
 52397  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52398  	var pTmp uintptr = pFile
 52399  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 52400  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 52401  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 52402  		if !(zNew != 0) {
 52403  			return SQLITE_NOMEM
 52404  		}
 52405  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 52406  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 52407  	}
 52408  	libc.Xmemcpy(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint64(iAmt))
 52409  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52410  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 52411  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52412  		}
 52413  		return int32(iOfst + sqlite_int64(iAmt))
 52414  	}()
 52415  	return SQLITE_OK
 52416  }
 52417  
 52418  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52419  	var pTmp uintptr = pFile
 52420  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52421  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 52422  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52423  		}
 52424  		return int32(size)
 52425  	}()
 52426  	return SQLITE_OK
 52427  }
 52428  
 52429  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52430  	return SQLITE_OK
 52431  }
 52432  
 52433  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52434  	var pTmp uintptr = pFile
 52435  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 52436  	return SQLITE_OK
 52437  }
 52438  
 52439  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52440  	return SQLITE_OK
 52441  }
 52442  
 52443  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52444  	return SQLITE_OK
 52445  }
 52446  
 52447  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52448  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52449  	return SQLITE_OK
 52450  }
 52451  
 52452  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52453  	return SQLITE_OK
 52454  }
 52455  
 52456  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52457  	return 0
 52458  }
 52459  
 52460  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52461  	return 0
 52462  }
 52463  
 52464  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 52465  	var rc int32 = SQLITE_OK
 52466  	var p uintptr = pFile
 52467  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52468  
 52469  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 52470  
 52471  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 52472  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52473  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 52474  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 52475  		}
 52476  		rc = (*struct {
 52477  			f func(*libc.TLS, uintptr) int32
 52478  		})(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)
 52479  		sqlite3.Xsqlite3_free(tls, pReal)
 52480  	}
 52481  
 52482  	return rc
 52483  }
 52484  
 52485  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52486  	var rc int32 = SQLITE_OK
 52487  	var p uintptr = pFile
 52488  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52489  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52490  
 52491  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 52492  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52493  		rc = SQLITE_IOERR | int32(2)<<8
 52494  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52495  		rc = (*struct {
 52496  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52497  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52498  	} else {
 52499  		var iRem int32 = iAmt
 52500  		var iBuf int32 = 0
 52501  		var ii int32 = int32(iOfst)
 52502  		for iRem > 0 && rc == SQLITE_OK {
 52503  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52504  			var iRealAmt int32 = func() int32 {
 52505  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52506  					return iRem
 52507  				}
 52508  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52509  			}()
 52510  
 52511  			rc = (*struct {
 52512  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52513  			})(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))
 52514  			ii = ii + iRealAmt
 52515  			iBuf = iBuf + iRealAmt
 52516  			iRem = iRem - iRealAmt
 52517  		}
 52518  	}
 52519  
 52520  	return rc
 52521  }
 52522  
 52523  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52524  	var rc int32 = SQLITE_OK
 52525  	var p uintptr = pFile
 52526  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52527  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52528  
 52529  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52530  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52531  			rc = SQLITE_FULL
 52532  		} else {
 52533  			rc = (*struct {
 52534  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52535  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52536  			if rc == SQLITE_OK {
 52537  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52538  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 52539  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52540  					}
 52541  					return int32(sqlite_int64(iAmt) + iOfst)
 52542  				}()
 52543  			}
 52544  		}
 52545  	} else {
 52546  		var iRem int32 = iAmt
 52547  		var iBuf int32 = 0
 52548  		var ii int32 = int32(iOfst)
 52549  		for iRem > 0 && rc == SQLITE_OK {
 52550  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52551  			var iRealAmt int32 = func() int32 {
 52552  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52553  					return iRem
 52554  				}
 52555  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52556  			}()
 52557  
 52558  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 52559  				rc = SQLITE_FULL
 52560  			} else {
 52561  				rc = (*struct {
 52562  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52563  				})(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))
 52564  				ii = ii + iRealAmt
 52565  				iBuf = iBuf + iRealAmt
 52566  				iRem = iRem - iRealAmt
 52567  			}
 52568  		}
 52569  		if rc == SQLITE_OK {
 52570  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52571  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 52572  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52573  				}
 52574  				return int32(sqlite_int64(iAmt) + iOfst)
 52575  			}()
 52576  		}
 52577  	}
 52578  
 52579  	return rc
 52580  }
 52581  
 52582  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52583  	var p uintptr = pFile
 52584  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52585  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52586  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52587  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 52588  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52589  			}
 52590  			return int32(size)
 52591  		}()
 52592  	} else {
 52593  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52594  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 52595  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52596  			}
 52597  			return int32(size)
 52598  		}()
 52599  	}
 52600  	return SQLITE_OK
 52601  }
 52602  
 52603  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52604  	bp := tls.Alloc(4)
 52605  	defer tls.Free(4)
 52606  
 52607  	var p uintptr = pFile
 52608  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52609  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52610  	var rc int32 = SQLITE_OK
 52611  
 52612  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52613  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 52614  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 52615  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 52616  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 52617  		rc = (*struct {
 52618  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52619  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 52620  	}
 52621  	if rc == SQLITE_OK {
 52622  		rc = (*struct {
 52623  			f func(*libc.TLS, uintptr, int32) int32
 52624  		})(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))
 52625  	}
 52626  
 52627  	return rc
 52628  }
 52629  
 52630  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52631  	var p uintptr = pFile
 52632  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52633  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52634  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 52635  	} else {
 52636  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 52637  	}
 52638  	return SQLITE_OK
 52639  }
 52640  
 52641  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52642  	return SQLITE_OK
 52643  }
 52644  
 52645  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52646  	return SQLITE_OK
 52647  }
 52648  
 52649  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52650  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52651  	return SQLITE_OK
 52652  }
 52653  
 52654  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52655  	if op == SQLITE_FCNTL_PRAGMA {
 52656  		return SQLITE_NOTFOUND
 52657  	}
 52658  	return SQLITE_OK
 52659  }
 52660  
 52661  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52662  	return BLOCKSIZE
 52663  }
 52664  
 52665  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52666  	return 0
 52667  }
 52668  
 52669  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52670  	bp := tls.Alloc(12)
 52671  	defer tls.Free(12)
 52672  
 52673  	var pFsVfs uintptr
 52674  	var p uintptr
 52675  	var pReal uintptr
 52676  	var eType int32
 52677  	var nName int32
 52678  	var rc int32
 52679  	var p2 uintptr
 52680  
 52681  	var real_flags int32
 52682  
 52683  	var pRealFile uintptr
 52684  	var pParent uintptr
 52685  	pFsVfs = pVfs
 52686  	p = pFile
 52687  	pReal = uintptr(0)
 52688  	rc = SQLITE_OK
 52689  
 52690  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 52691  		goto __1
 52692  	}
 52693  	p2 = pFile
 52694  	libc.Xmemset(tls, p2, 0, uint64(unsafe.Sizeof(tmp_file{})))
 52695  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 52696  	return SQLITE_OK
 52697  __1:
 52698  	;
 52699  	eType = func() int32 {
 52700  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 52701  			return DATABASE_FILE
 52702  		}
 52703  		return JOURNAL_FILE
 52704  	}()
 52705  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 52706  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 52707  
 52708  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 52709  		if eType == JOURNAL_FILE {
 52710  			return 8
 52711  		}
 52712  		return 0
 52713  	}()
 52714  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52715  __2:
 52716  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint64(nName)) != 0) {
 52717  		goto __4
 52718  	}
 52719  	goto __3
 52720  __3:
 52721  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52722  	goto __2
 52723  	goto __4
 52724  __4:
 52725  	;
 52726  	if !!(pReal != 0) {
 52727  		goto __5
 52728  	}
 52729  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 52730  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 52731  
 52732  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 52733  	if !!(pReal != 0) {
 52734  		goto __6
 52735  	}
 52736  	rc = SQLITE_NOMEM
 52737  	goto open_out
 52738  __6:
 52739  	;
 52740  	libc.Xmemset(tls, pReal, 0, uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile))
 52741  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 52742  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*48
 52743  
 52744  	rc = (*struct {
 52745  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52746  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 52747  	if !(rc != SQLITE_OK) {
 52748  		goto __7
 52749  	}
 52750  	goto open_out
 52751  __7:
 52752  	;
 52753  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52754  
 52755  	rc = (*struct {
 52756  		f func(*libc.TLS, uintptr, uintptr) int32
 52757  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 52758  	if !(rc != SQLITE_OK) {
 52759  		goto __8
 52760  	}
 52761  	goto open_out
 52762  __8:
 52763  	;
 52764  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 52765  		goto __9
 52766  	}
 52767  	rc = (*struct {
 52768  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52769  	})(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))
 52770  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 52771  	goto __10
 52772  __9:
 52773  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 52774  	rc = (*struct {
 52775  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52776  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 52777  	(*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)))
 52778  	if !(rc == SQLITE_OK) {
 52779  		goto __11
 52780  	}
 52781  	rc = (*struct {
 52782  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52783  	})(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))
 52784  	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) {
 52785  		goto __12
 52786  	}
 52787  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 52788  __12:
 52789  	;
 52790  __11:
 52791  	;
 52792  __10:
 52793  	;
 52794  	if !(rc == SQLITE_OK) {
 52795  		goto __13
 52796  	}
 52797  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52798  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 52799  		goto __14
 52800  	}
 52801  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 32
 52802  __14:
 52803  	;
 52804  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 168
 52805  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 52806  __13:
 52807  	;
 52808  __5:
 52809  	;
 52810  open_out:
 52811  	if !(pReal != 0) {
 52812  		goto __15
 52813  	}
 52814  	if !(rc == SQLITE_OK) {
 52815  		goto __16
 52816  	}
 52817  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 52818  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 52819  	goto __17
 52820  __16:
 52821  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 52822  		goto __18
 52823  	}
 52824  	(*struct {
 52825  		f func(*libc.TLS, uintptr) int32
 52826  	})(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)
 52827  __18:
 52828  	;
 52829  	sqlite3.Xsqlite3_free(tls, pReal)
 52830  __17:
 52831  	;
 52832  __15:
 52833  	;
 52834  	return rc
 52835  }
 52836  
 52837  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 52838  	var rc int32 = SQLITE_OK
 52839  	var pFsVfs uintptr = pVfs
 52840  	var pReal uintptr
 52841  	var pF uintptr
 52842  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 52843  
 52844  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52845  	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 {
 52846  	}
 52847  	if pReal != 0 {
 52848  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52849  		rc = (*struct {
 52850  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52851  		})(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))
 52852  		if rc == SQLITE_OK {
 52853  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 52854  		}
 52855  	}
 52856  	return rc
 52857  }
 52858  
 52859  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 52860  	var pFsVfs uintptr = pVfs
 52861  	var pReal uintptr
 52862  	var isJournal int32 = 0
 52863  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 52864  
 52865  	if flags != SQLITE_ACCESS_EXISTS {
 52866  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52867  		return (*struct {
 52868  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52869  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 52870  	}
 52871  
 52872  	if nName > 8 && libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nName-8)) == 0 {
 52873  		nName = nName - 8
 52874  		isJournal = 1
 52875  	}
 52876  
 52877  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52878  	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 {
 52879  	}
 52880  
 52881  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 52882  	return SQLITE_OK
 52883  }
 52884  
 52885  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 52886  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52887  	return (*struct {
 52888  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52889  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 52890  }
 52891  
 52892  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 52893  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52894  	return (*struct {
 52895  		f func(*libc.TLS, uintptr, uintptr) uintptr
 52896  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 52897  }
 52898  
 52899  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 52900  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52901  	(*struct {
 52902  		f func(*libc.TLS, uintptr, int32, uintptr)
 52903  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 52904  }
 52905  
 52906  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 52907  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52908  	return (*struct {
 52909  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 52910  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 52911  }
 52912  
 52913  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 52914  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52915  	(*struct {
 52916  		f func(*libc.TLS, uintptr, uintptr)
 52917  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 52918  }
 52919  
 52920  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 52921  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52922  	return (*struct {
 52923  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52924  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 52925  }
 52926  
 52927  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 52928  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52929  	return (*struct {
 52930  		f func(*libc.TLS, uintptr, int32) int32
 52931  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 52932  }
 52933  
 52934  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 52935  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52936  	return (*struct {
 52937  		f func(*libc.TLS, uintptr, uintptr) int32
 52938  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 52939  }
 52940  
 52941  func fs_register(tls *libc.TLS) int32 {
 52942  	if fs_vfs.FpParent != 0 {
 52943  		return SQLITE_OK
 52944  	}
 52945  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 52946  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 52947  	fs_vfs.Fbase.FszOsFile = func() int32 {
 52948  		if uint64(unsafe.Sizeof(tmp_file{})) > uint64(unsafe.Sizeof(fs_file{})) {
 52949  			return int32(unsafe.Sizeof(tmp_file{}))
 52950  		}
 52951  		return int32(unsafe.Sizeof(fs_file{}))
 52952  	}()
 52953  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 52954  }
 52955  
 52956  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 52957  	return fs_register(tls)
 52958  }
 52959  
 52960  type VfslogVfs1 = struct {
 52961  	Fbase        sqlite3_vfs
 52962  	FpVfs        uintptr
 52963  	FiNextFileId int32
 52964  	F__ccgo_pad1 [4]byte
 52965  	FpLog        uintptr
 52966  	FiOffset     sqlite3_int64
 52967  	FnBuf        int32
 52968  	FaBuf        [8192]uint8
 52969  	F__ccgo_pad2 [4]byte
 52970  }
 52971  
 52972  type VfslogVfs = VfslogVfs1
 52973  type VfslogFile1 = struct {
 52974  	Fbase        sqlite3_file
 52975  	FpReal       uintptr
 52976  	FpVfslog     uintptr
 52977  	FiFileId     int32
 52978  	F__ccgo_pad1 [4]byte
 52979  }
 52980  
 52981  type VfslogFile = VfslogFile1
 52982  
 52983  var vfslog_vfs = sqlite3_vfs{
 52984  	FiVersion:          1,
 52985  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 52986  	FmxPathname:        INST_MAX_PATHNAME,
 52987  	FxOpen:             0,
 52988  	FxDelete:           0,
 52989  	FxAccess:           0,
 52990  	FxFullPathname:     0,
 52991  	FxDlOpen:           0,
 52992  	FxDlError:          0,
 52993  	FxDlSym:            0,
 52994  	FxDlClose:          0,
 52995  	FxRandomness:       0,
 52996  	FxSleep:            0,
 52997  	FxCurrentTime:      0,
 52998  	FxGetLastError:     0,
 52999  	FxCurrentTimeInt64: 0,
 53000  }
 53001  
 53002  var vfslog_io_methods = sqlite3_io_methods{
 53003  	FiVersion:               2,
 53004  	FxClose:                 0,
 53005  	FxRead:                  0,
 53006  	FxWrite:                 0,
 53007  	FxTruncate:              0,
 53008  	FxSync:                  0,
 53009  	FxFileSize:              0,
 53010  	FxLock:                  0,
 53011  	FxUnlock:                0,
 53012  	FxCheckReservedLock:     0,
 53013  	FxFileControl:           0,
 53014  	FxSectorSize:            0,
 53015  	FxDeviceCharacteristics: 0,
 53016  	FxShmMap:                0,
 53017  	FxShmLock:               0,
 53018  	FxShmBarrier:            0,
 53019  	FxShmUnmap:              0,
 53020  }
 53021  
 53022  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 53023  	bp := tls.Alloc(16)
 53024  	defer tls.Free(16)
 53025  
 53026  	libc.Xgettimeofday(tls, bp, uintptr(0))
 53027  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 53028  }
 53029  
 53030  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 53031  	var t sqlite3_uint64
 53032  	var rc int32 = SQLITE_OK
 53033  	var p uintptr = pFile
 53034  
 53035  	t = vfslog_time(tls)
 53036  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 53037  		rc = (*struct {
 53038  			f func(*libc.TLS, uintptr) int32
 53039  		})(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)
 53040  	}
 53041  	t = vfslog_time(tls) - t
 53042  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53043  	return rc
 53044  }
 53045  
 53046  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 53047  	var rc int32
 53048  	var t sqlite3_uint64
 53049  	var p uintptr = pFile
 53050  	t = vfslog_time(tls)
 53051  	rc = (*struct {
 53052  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53053  	})(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)
 53054  	t = vfslog_time(tls) - t
 53055  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 53056  	return rc
 53057  }
 53058  
 53059  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 53060  	var rc int32
 53061  	var t sqlite3_uint64
 53062  	var p uintptr = pFile
 53063  	t = vfslog_time(tls)
 53064  	rc = (*struct {
 53065  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53066  	})(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)
 53067  	t = vfslog_time(tls) - t
 53068  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 53069  	return rc
 53070  }
 53071  
 53072  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 53073  	var rc int32
 53074  	var t sqlite3_uint64
 53075  	var p uintptr = pFile
 53076  	t = vfslog_time(tls)
 53077  	rc = (*struct {
 53078  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53079  	})(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)
 53080  	t = vfslog_time(tls) - t
 53081  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 53082  	return rc
 53083  }
 53084  
 53085  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 53086  	var rc int32
 53087  	var t sqlite3_uint64
 53088  	var p uintptr = pFile
 53089  	t = vfslog_time(tls)
 53090  	rc = (*struct {
 53091  		f func(*libc.TLS, uintptr, int32) int32
 53092  	})(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)
 53093  	t = vfslog_time(tls) - t
 53094  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 53095  	return rc
 53096  }
 53097  
 53098  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 53099  	var rc int32
 53100  	var t sqlite3_uint64
 53101  	var p uintptr = pFile
 53102  	t = vfslog_time(tls)
 53103  	rc = (*struct {
 53104  		f func(*libc.TLS, uintptr, uintptr) int32
 53105  	})(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)
 53106  	t = vfslog_time(tls) - t
 53107  	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))))
 53108  	return rc
 53109  }
 53110  
 53111  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 53112  	var rc int32
 53113  	var t sqlite3_uint64
 53114  	var p uintptr = pFile
 53115  	t = vfslog_time(tls)
 53116  	rc = (*struct {
 53117  		f func(*libc.TLS, uintptr, int32) int32
 53118  	})(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)
 53119  	t = vfslog_time(tls) - t
 53120  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 53121  	return rc
 53122  }
 53123  
 53124  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 53125  	var rc int32
 53126  	var t sqlite3_uint64
 53127  	var p uintptr = pFile
 53128  	t = vfslog_time(tls)
 53129  	rc = (*struct {
 53130  		f func(*libc.TLS, uintptr, int32) int32
 53131  	})(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)
 53132  	t = vfslog_time(tls) - t
 53133  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 53134  	return rc
 53135  }
 53136  
 53137  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 53138  	var rc int32
 53139  	var t sqlite3_uint64
 53140  	var p uintptr = pFile
 53141  	t = vfslog_time(tls)
 53142  	rc = (*struct {
 53143  		f func(*libc.TLS, uintptr, uintptr) int32
 53144  	})(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)
 53145  	t = vfslog_time(tls) - t
 53146  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 53147  	return rc
 53148  }
 53149  
 53150  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 53151  	bp := tls.Alloc(8)
 53152  	defer tls.Free(8)
 53153  
 53154  	var p uintptr = pFile
 53155  	var rc int32 = (*struct {
 53156  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53157  	})(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)
 53158  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 53159  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35525, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 53160  	}
 53161  	return rc
 53162  }
 53163  
 53164  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 53165  	var rc int32
 53166  	var t sqlite3_uint64
 53167  	var p uintptr = pFile
 53168  	t = vfslog_time(tls)
 53169  	rc = (*struct {
 53170  		f func(*libc.TLS, uintptr) int32
 53171  	})(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)
 53172  	t = vfslog_time(tls) - t
 53173  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53174  	return rc
 53175  }
 53176  
 53177  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 53178  	var rc int32
 53179  	var t sqlite3_uint64
 53180  	var p uintptr = pFile
 53181  	t = vfslog_time(tls)
 53182  	rc = (*struct {
 53183  		f func(*libc.TLS, uintptr) int32
 53184  	})(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)
 53185  	t = vfslog_time(tls) - t
 53186  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53187  	return rc
 53188  }
 53189  
 53190  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 53191  	var rc int32
 53192  	var t sqlite3_uint64
 53193  	var p uintptr = pFile
 53194  	t = vfslog_time(tls)
 53195  	rc = (*struct {
 53196  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 53197  	})(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)
 53198  	t = vfslog_time(tls) - t
 53199  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53200  	return rc
 53201  }
 53202  
 53203  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 53204  	var rc int32
 53205  	var t sqlite3_uint64
 53206  	var p uintptr = pFile
 53207  	t = vfslog_time(tls)
 53208  	rc = (*struct {
 53209  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 53210  	})(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)
 53211  	t = vfslog_time(tls) - t
 53212  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53213  	return rc
 53214  }
 53215  
 53216  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 53217  	var t sqlite3_uint64
 53218  	var p uintptr = pFile
 53219  	t = vfslog_time(tls)
 53220  	(*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)
 53221  	t = vfslog_time(tls) - t
 53222  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 53223  }
 53224  
 53225  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 53226  	var rc int32
 53227  	var t sqlite3_uint64
 53228  	var p uintptr = pFile
 53229  	t = vfslog_time(tls)
 53230  	rc = (*struct {
 53231  		f func(*libc.TLS, uintptr, int32) int32
 53232  	})(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)
 53233  	t = vfslog_time(tls) - t
 53234  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53235  	return rc
 53236  }
 53237  
 53238  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 53239  	var rc int32
 53240  	var t sqlite3_uint64
 53241  	var p uintptr = pFile
 53242  	var pLog uintptr = pVfs
 53243  
 53244  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 53245  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*32
 53246  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 53247  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 53248  
 53249  	t = vfslog_time(tls)
 53250  	rc = (*struct {
 53251  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53252  	})(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)
 53253  	t = vfslog_time(tls) - t
 53254  
 53255  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53256  	vfslog_string(tls, pVfs, zName)
 53257  	return rc
 53258  }
 53259  
 53260  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 53261  	var rc int32
 53262  	var t sqlite3_uint64
 53263  	t = vfslog_time(tls)
 53264  	rc = (*struct {
 53265  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53266  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 53267  	t = vfslog_time(tls) - t
 53268  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 53269  	vfslog_string(tls, pVfs, zPath)
 53270  	return rc
 53271  }
 53272  
 53273  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 53274  	var rc int32
 53275  	var t sqlite3_uint64
 53276  	t = vfslog_time(tls)
 53277  	rc = (*struct {
 53278  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53279  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 53280  	t = vfslog_time(tls) - t
 53281  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 53282  	vfslog_string(tls, pVfs, zPath)
 53283  	return rc
 53284  }
 53285  
 53286  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 53287  	return (*struct {
 53288  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53289  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 53290  }
 53291  
 53292  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 53293  	return (*struct {
 53294  		f func(*libc.TLS, uintptr, uintptr) uintptr
 53295  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 53296  }
 53297  
 53298  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 53299  	(*struct {
 53300  		f func(*libc.TLS, uintptr, int32, uintptr)
 53301  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 53302  }
 53303  
 53304  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 53305  	return (*struct {
 53306  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 53307  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 53308  }
 53309  
 53310  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 53311  	(*struct {
 53312  		f func(*libc.TLS, uintptr, uintptr)
 53313  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 53314  }
 53315  
 53316  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 53317  	return (*struct {
 53318  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53319  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 53320  }
 53321  
 53322  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 53323  	return (*struct {
 53324  		f func(*libc.TLS, uintptr, int32) int32
 53325  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 53326  }
 53327  
 53328  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 53329  	return (*struct {
 53330  		f func(*libc.TLS, uintptr, uintptr) int32
 53331  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 53332  }
 53333  
 53334  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 53335  	return (*struct {
 53336  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53337  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 53338  }
 53339  
 53340  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 53341  	return (*struct {
 53342  		f func(*libc.TLS, uintptr, uintptr) int32
 53343  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 53344  }
 53345  
 53346  func vfslog_flush(tls *libc.TLS, p uintptr) {
 53347  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 53348  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 53349  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 53350  
 53351  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 53352  	sqlite3.Xsqlite3_io_error_persist = 0
 53353  	sqlite3.Xsqlite3_diskfull_pending = 0
 53354  
 53355  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 53356  		(*struct {
 53357  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53358  		})(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)
 53359  		*(*sqlite3_int64)(unsafe.Pointer(p + 192)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53360  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 53361  	}
 53362  
 53363  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 53364  	sqlite3.Xsqlite3_io_error_persist = persist
 53365  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 53366  }
 53367  
 53368  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 53369  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 53370  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 53371  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 53372  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 53373  }
 53374  
 53375  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 53376  	var p uintptr = pVfs
 53377  	var zRec uintptr
 53378  	if uint64(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]uint8{})) {
 53379  		vfslog_flush(tls, p)
 53380  	}
 53381  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53382  	put32bits(tls, zRec, uint32(eEvent))
 53383  	put32bits(tls, zRec+4, uint32(iFileid))
 53384  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 53385  	put32bits(tls, zRec+12, uint32(return_code))
 53386  	put32bits(tls, zRec+16, uint32(size))
 53387  	put32bits(tls, zRec+20, uint32(offset))
 53388  	*(*int32)(unsafe.Pointer(p + 200)) += 24
 53389  }
 53390  
 53391  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 53392  	var p uintptr = pVfs
 53393  	var zRec uintptr
 53394  	var nStr int32
 53395  	if zStr != 0 {
 53396  		nStr = int32(libc.Xstrlen(tls, zStr))
 53397  	} else {
 53398  		nStr = 0
 53399  	}
 53400  	if uint64(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]uint8{})) {
 53401  		vfslog_flush(tls, p)
 53402  	}
 53403  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53404  	put32bits(tls, zRec, uint32(nStr))
 53405  	if zStr != 0 {
 53406  		libc.Xmemcpy(tls, zRec+4, zStr, uint64(nStr))
 53407  	}
 53408  	*(*int32)(unsafe.Pointer(p + 200)) += 4 + nStr
 53409  }
 53410  
 53411  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 53412  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 53413  		vfslog_flush(tls, p)
 53414  		(*struct {
 53415  			f func(*libc.TLS, uintptr) int32
 53416  		})(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)
 53417  	}
 53418  	sqlite3.Xsqlite3_free(tls, p)
 53419  }
 53420  
 53421  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 53422  	var pVfs uintptr
 53423  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53424  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53425  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53426  	}{vfslogOpen})) {
 53427  		return SQLITE_ERROR
 53428  	}
 53429  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 53430  	vfslog_finalize(tls, pVfs)
 53431  	return SQLITE_OK
 53432  }
 53433  
 53434  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 53435  	bp := tls.Alloc(4)
 53436  	defer tls.Free(4)
 53437  
 53438  	var p uintptr
 53439  	var pParent uintptr
 53440  	var nByte int32
 53441  
 53442  	var rc int32
 53443  	var zFile uintptr
 53444  	var nVfs int32
 53445  
 53446  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 53447  	if !(pParent != 0) {
 53448  		return SQLITE_ERROR
 53449  	}
 53450  
 53451  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 53452  	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))
 53453  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53454  	libc.Xmemset(tls, p, 0, uint64(nByte))
 53455  
 53456  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 53457  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8400
 53458  	libc.Xmemcpy(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 53459  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 53460  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 53461  	libc.Xmemcpy(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint64(nVfs))
 53462  
 53463  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 53464  	(*struct {
 53465  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53466  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 53467  
 53468  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 53469  	(*struct {
 53470  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53471  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 53472  	rc = (*struct {
 53473  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53474  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 53475  	if rc == SQLITE_OK {
 53476  		libc.Xmemcpy(tls, p+204, ts+35535, uint64(20))
 53477  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 53478  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 53479  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 53480  	}
 53481  	if rc != 0 {
 53482  		vfslog_finalize(tls, p)
 53483  	}
 53484  	return rc
 53485  }
 53486  
 53487  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 53488  	var pVfs uintptr
 53489  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53490  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53491  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53492  	}{vfslogOpen})) {
 53493  		return SQLITE_ERROR
 53494  	}
 53495  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 53496  	vfslog_string(tls, pVfs, zMsg)
 53497  	return SQLITE_OK
 53498  }
 53499  
 53500  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 53501  	var zEvent uintptr = uintptr(0)
 53502  
 53503  	switch eEvent {
 53504  	case OS_CLOSE:
 53505  		zEvent = ts + 35556
 53506  		break
 53507  	case OS_READ:
 53508  		zEvent = ts + 35563
 53509  		break
 53510  	case OS_WRITE:
 53511  		zEvent = ts + 35569
 53512  		break
 53513  	case OS_TRUNCATE:
 53514  		zEvent = ts + 35576
 53515  		break
 53516  	case OS_SYNC:
 53517  		zEvent = ts + 27843
 53518  		break
 53519  	case OS_FILESIZE:
 53520  		zEvent = ts + 35586
 53521  		break
 53522  	case OS_LOCK:
 53523  		zEvent = ts + 35596
 53524  		break
 53525  	case OS_UNLOCK:
 53526  		zEvent = ts + 35602
 53527  		break
 53528  	case OS_CHECKRESERVEDLOCK:
 53529  		zEvent = ts + 35610
 53530  		break
 53531  	case OS_FILECONTROL:
 53532  		zEvent = ts + 35624
 53533  		break
 53534  	case OS_SECTORSIZE:
 53535  		zEvent = ts + 35637
 53536  		break
 53537  	case OS_DEVCHAR:
 53538  		zEvent = ts + 35649
 53539  		break
 53540  	case OS_OPEN:
 53541  		zEvent = ts + 27421
 53542  		break
 53543  	case OS_DELETE:
 53544  		zEvent = ts + 35661
 53545  		break
 53546  	case OS_ACCESS:
 53547  		zEvent = ts + 35669
 53548  		break
 53549  	case OS_FULLPATHNAME:
 53550  		zEvent = ts + 35677
 53551  		break
 53552  	case OS_RANDOMNESS:
 53553  		zEvent = ts + 35691
 53554  		break
 53555  	case OS_SLEEP:
 53556  		zEvent = ts + 35703
 53557  		break
 53558  	case OS_CURRENTTIME:
 53559  		zEvent = ts + 35710
 53560  		break
 53561  
 53562  	case OS_SHMUNMAP:
 53563  		zEvent = ts + 35723
 53564  		break
 53565  	case OS_SHMLOCK:
 53566  		zEvent = ts + 35733
 53567  		break
 53568  	case OS_SHMBARRIER:
 53569  		zEvent = ts + 35742
 53570  		break
 53571  	case OS_SHMMAP:
 53572  		zEvent = ts + 35754
 53573  		break
 53574  
 53575  	case OS_ANNOTATE:
 53576  		zEvent = ts + 35762
 53577  		break
 53578  	}
 53579  
 53580  	return zEvent
 53581  }
 53582  
 53583  type VfslogVtab1 = struct {
 53584  	Fbase  sqlite3_vtab
 53585  	FpFd   uintptr
 53586  	FnByte sqlite3_int64
 53587  	FzFile uintptr
 53588  }
 53589  
 53590  type VfslogVtab = VfslogVtab1
 53591  type VfslogCsr1 = struct {
 53592  	Fbase        sqlite3_vtab_cursor
 53593  	FiRowid      sqlite3_int64
 53594  	FiOffset     sqlite3_int64
 53595  	FzTransient  uintptr
 53596  	FnFile       int32
 53597  	F__ccgo_pad1 [4]byte
 53598  	FazFile      uintptr
 53599  	FaBuf        [1024]uint8
 53600  }
 53601  
 53602  type VfslogCsr = VfslogCsr1
 53603  
 53604  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 53605  	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))))
 53606  }
 53607  
 53608  func dequote(tls *libc.TLS, z uintptr) {
 53609  	var quote uint8
 53610  	quote = *(*uint8)(unsafe.Pointer(z))
 53611  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 53612  		var iIn int32 = 1
 53613  		var iOut int32 = 0
 53614  		if int32(quote) == '[' {
 53615  			quote = uint8(']')
 53616  		}
 53617  		for *(*uint8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 53618  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 53619  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 53620  					break
 53621  				}
 53622  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 53623  				iIn = iIn + 2
 53624  			} else {
 53625  				*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 53626  			}
 53627  		}
 53628  		*(*uint8)(unsafe.Pointer(z + uintptr(iOut))) = uint8(0)
 53629  	}
 53630  }
 53631  
 53632  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 53633  	bp := tls.Alloc(12)
 53634  	defer tls.Free(12)
 53635  
 53636  	var pVfs uintptr
 53637  
 53638  	var p uintptr
 53639  	var rc int32
 53640  	var nByte int32
 53641  	var zFile uintptr
 53642  
 53643  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 53644  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 53645  	nByte = int32(uint64(unsafe.Sizeof(VfslogVtab{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 53646  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53647  	if p == uintptr(0) {
 53648  		return SQLITE_NOMEM
 53649  	}
 53650  	libc.Xmemset(tls, p, 0, uint64(nByte))
 53651  
 53652  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*48
 53653  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 53654  
 53655  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 53656  	if !(zFile != 0) {
 53657  		sqlite3.Xsqlite3_free(tls, p)
 53658  		return SQLITE_NOMEM
 53659  	}
 53660  	dequote(tls, zFile)
 53661  	(*struct {
 53662  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53663  	})(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)
 53664  	sqlite3.Xsqlite3_free(tls, zFile)
 53665  
 53666  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 53667  	rc = (*struct {
 53668  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53669  	})(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)
 53670  
 53671  	if rc == SQLITE_OK {
 53672  		(*struct {
 53673  			f func(*libc.TLS, uintptr, uintptr) int32
 53674  		})(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)
 53675  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 53676  			ts+35773)
 53677  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 53678  	} else {
 53679  		sqlite3.Xsqlite3_free(tls, p)
 53680  	}
 53681  
 53682  	return rc
 53683  }
 53684  
 53685  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 53686  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 53687  	return SQLITE_OK
 53688  }
 53689  
 53690  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 53691  	var p uintptr = pVtab
 53692  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 53693  		(*struct {
 53694  			f func(*libc.TLS, uintptr) int32
 53695  		})(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)
 53696  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 53697  	}
 53698  	sqlite3.Xsqlite3_free(tls, p)
 53699  	return SQLITE_OK
 53700  }
 53701  
 53702  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 53703  	var pCsr uintptr
 53704  
 53705  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 53706  	if !(pCsr != 0) {
 53707  		return SQLITE_NOMEM
 53708  	}
 53709  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(VfslogCsr{})))
 53710  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 53711  	return SQLITE_OK
 53712  }
 53713  
 53714  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 53715  	var p uintptr = pCursor
 53716  	var i int32
 53717  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 53718  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*8)))
 53719  	}
 53720  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 53721  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 53722  	sqlite3.Xsqlite3_free(tls, p)
 53723  	return SQLITE_OK
 53724  }
 53725  
 53726  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 53727  	bp := tls.Alloc(4)
 53728  	defer tls.Free(4)
 53729  
 53730  	var pCsr uintptr = pCursor
 53731  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 53732  	var rc int32 = SQLITE_OK
 53733  	var nRead int32
 53734  
 53735  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 53736  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 53737  
 53738  	nRead = 24
 53739  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 53740  		var eEvent int32
 53741  		rc = (*struct {
 53742  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53743  		})(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)
 53744  
 53745  		eEvent = int32(get32bits(tls, pCsr+48))
 53746  		if rc == SQLITE_OK &&
 53747  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 53748  			rc = (*struct {
 53749  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53750  			})(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))
 53751  			nRead = nRead + 4
 53752  			if rc == SQLITE_OK {
 53753  				var nStr int32 = int32(get32bits(tls, bp))
 53754  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 53755  				rc = (*struct {
 53756  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53757  				})(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))
 53758  				*(*uint8)(unsafe.Pointer(zStr + uintptr(nStr))) = uint8(0)
 53759  				nRead = nRead + nStr
 53760  
 53761  				if eEvent == OS_OPEN {
 53762  					var iFileid int32 = int32(get32bits(tls, pCsr+48+4))
 53763  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 53764  						var nNew int32 = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(iFileid+1))
 53765  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 53766  						nNew = int32(uint64(nNew) - uint64(unsafe.Sizeof(uintptr(0)))*uint64((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 53767  						libc.Xmemset(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0, uint64(nNew))
 53768  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 53769  					}
 53770  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)))
 53771  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)) = zStr
 53772  				} else {
 53773  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 53774  				}
 53775  			}
 53776  		}
 53777  	}
 53778  
 53779  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 8)) += int64(1)
 53780  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 16)) += sqlite3_int64(nRead)
 53781  	return rc
 53782  }
 53783  
 53784  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 53785  	var pCsr uintptr = pCursor
 53786  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 53787  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 53788  }
 53789  
 53790  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 53791  	var pCsr uintptr = pCursor
 53792  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 53793  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 53794  	return vlogNext(tls, pCursor)
 53795  }
 53796  
 53797  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 53798  	var val uint32
 53799  	var pCsr uintptr = pCursor
 53800  
 53801  	val = get32bits(tls, pCsr+48+uintptr(4*i))
 53802  
 53803  	switch i {
 53804  	case 0:
 53805  		{
 53806  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 53807  			break
 53808  
 53809  		}
 53810  	case 1:
 53811  		{
 53812  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 53813  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 53814  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*8))
 53815  			}
 53816  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 53817  			break
 53818  
 53819  		}
 53820  	default:
 53821  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 53822  		break
 53823  	}
 53824  
 53825  	return SQLITE_OK
 53826  }
 53827  
 53828  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 53829  	var pCsr uintptr = pCursor
 53830  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 53831  	return SQLITE_OK
 53832  }
 53833  
 53834  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 53835  	sqlite3.Xsqlite3_create_module(tls, db, ts+35828, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 53836  	return SQLITE_OK
 53837  }
 53838  
 53839  var vfslog_module = sqlite3_module{
 53840  	FxCreate:     0,
 53841  	FxConnect:    0,
 53842  	FxBestIndex:  0,
 53843  	FxDisconnect: 0,
 53844  	FxDestroy:    0,
 53845  	FxOpen:       0,
 53846  	FxClose:      0,
 53847  	FxFilter:     0,
 53848  	FxNext:       0,
 53849  	FxEof:        0,
 53850  	FxColumn:     0,
 53851  	FxRowid:      0,
 53852  }
 53853  
 53854  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 53855  	bp := tls.Alloc(144)
 53856  	defer tls.Free(144)
 53857  
 53858  	var db uintptr
 53859  
 53860  	var rc int32 = SQLITE_ERROR
 53861  
 53862  	if objc < 2 {
 53863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 53864  		return TCL_ERROR
 53865  	}
 53866  	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 {
 53867  		return TCL_ERROR
 53868  	}
 53869  
 53870  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 53871  	case uint32(0):
 53872  		{
 53873  			var zVfs uintptr
 53874  			var zMsg uintptr
 53875  			if objc != 4 {
 53876  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+35835)
 53877  				return TCL_ERROR
 53878  			}
 53879  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53880  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 53881  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 53882  			if rc != SQLITE_OK {
 53883  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35839, 0))
 53884  				return TCL_ERROR
 53885  			}
 53886  			break
 53887  
 53888  		}
 53889  	case uint32(1):
 53890  		{
 53891  			var zVfs uintptr
 53892  			if objc != 3 {
 53893  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35835)
 53894  				return TCL_ERROR
 53895  			}
 53896  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53897  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 53898  			if rc != SQLITE_OK {
 53899  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+35839, 0))
 53900  				return TCL_ERROR
 53901  			}
 53902  			break
 53903  
 53904  		}
 53905  
 53906  	case uint32(2):
 53907  		{
 53908  			var zVfs uintptr
 53909  			var zParent uintptr
 53910  			var zLog uintptr
 53911  			if objc != 5 {
 53912  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35846)
 53913  				return TCL_ERROR
 53914  			}
 53915  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53916  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 53917  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 53918  			if int32(*(*uint8)(unsafe.Pointer(zParent))) == 0 {
 53919  				zParent = uintptr(0)
 53920  			}
 53921  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 53922  			if rc != SQLITE_OK {
 53923  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+35839, 0))
 53924  				return TCL_ERROR
 53925  			}
 53926  			break
 53927  
 53928  		}
 53929  
 53930  	case uint32(3):
 53931  		{
 53932  			var zDb uintptr
 53933  			if objc != 3 {
 53934  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 53935  				return TCL_ERROR
 53936  			}
 53937  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53938  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+80) != 0 {
 53939  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 80)).FobjClientData)).Fdb
 53940  				rc = sqlite3_vfslog_register(tls, db)
 53941  			}
 53942  			if rc != SQLITE_OK {
 53943  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+35865, zDb, uintptr(0)))
 53944  				return TCL_ERROR
 53945  			}
 53946  			break
 53947  
 53948  		}
 53949  	}
 53950  
 53951  	return TCL_OK
 53952  }
 53953  
 53954  var strs = [5]uintptr{ts + 35886, ts + 35895, ts + 14009, ts + 35904, uintptr(0)}
 53955  
 53956  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 53957  	tcl.XTcl_CreateObjCommand(tls, interp, ts+35828, *(*uintptr)(unsafe.Pointer(&struct {
 53958  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53959  	}{test_vfslog})), uintptr(0), uintptr(0))
 53960  	return TCL_OK
 53961  }
 53962  
 53963  type testpcacheGlobalType1 = struct {
 53964  	FpDummy        uintptr
 53965  	FnInstance     int32
 53966  	FdiscardChance uint32
 53967  	FprngSeed      uint32
 53968  	FhighStress    uint32
 53969  }
 53970  
 53971  type testpcacheGlobalType = testpcacheGlobalType1
 53972  
 53973  var testpcacheGlobal testpcacheGlobalType
 53974  
 53975  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 53976  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 53977  	if testpcacheGlobal.FpDummy == uintptr(0) {
 53978  		return SQLITE_NOMEM
 53979  	}
 53980  	return SQLITE_OK
 53981  }
 53982  
 53983  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 53984  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 53985  	testpcacheGlobal.FpDummy = uintptr(0)
 53986  }
 53987  
 53988  type testpcache1 = struct {
 53989  	FszPage      int32
 53990  	FszExtra     int32
 53991  	FbPurgeable  int32
 53992  	FnFree       int32
 53993  	FnPinned     int32
 53994  	FiRand       uint32
 53995  	FiMagic      uint32
 53996  	F__ccgo_pad1 [4]byte
 53997  	Fa           [217]struct {
 53998  		Fpage     sqlite3_pcache_page
 53999  		Fkey      uint32
 54000  		FisPinned int32
 54001  	}
 54002  }
 54003  
 54004  type testpcache = testpcache1
 54005  type testpcachePage = struct {
 54006  	Fpage     sqlite3_pcache_page
 54007  	Fkey      uint32
 54008  	FisPinned int32
 54009  }
 54010  
 54011  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 54012  	var x uint32 = uint32(0)
 54013  	var i int32
 54014  	for i = 0; i < 4; i++ {
 54015  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 54016  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 54017  	}
 54018  	return x
 54019  }
 54020  
 54021  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 54022  	var nMem int32
 54023  	var x uintptr
 54024  	var p uintptr
 54025  	var i int32
 54026  
 54027  	szPage = (szPage + 7) & libc.CplInt32(7)
 54028  	nMem = int32(uint64(unsafe.Sizeof(testpcache{})) + uint64(TESTPCACHE_NPAGE*(szPage+szExtra)))
 54029  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 54030  	if p == uintptr(0) {
 54031  		return uintptr(0)
 54032  	}
 54033  	x = p + 1*5240
 54034  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 54035  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 54036  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 54037  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 54038  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 54039  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 54040  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 54041  	i = 0
 54042  __1:
 54043  	if !(i < TESTPCACHE_NPAGE) {
 54044  		goto __3
 54045  	}
 54046  	{
 54047  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54048  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 54049  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpBuf = x
 54050  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpExtra = x + uintptr(szPage)
 54051  
 54052  	}
 54053  	goto __2
 54054  __2:
 54055  	i++
 54056  	x += uintptr(szPage + szExtra)
 54057  	goto __1
 54058  	goto __3
 54059  __3:
 54060  	;
 54061  	testpcacheGlobal.FnInstance++
 54062  	return p
 54063  }
 54064  
 54065  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 54066  	var p uintptr = pCache
 54067  	_ = p
 54068  
 54069  }
 54070  
 54071  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 54072  	var p uintptr = pCache
 54073  
 54074  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 54075  }
 54076  
 54077  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 54078  	var p uintptr = pCache
 54079  	var i int32
 54080  	var j int32
 54081  
 54082  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54083  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == key {
 54084  			if !((*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0) {
 54085  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 54086  
 54087  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 1
 54088  			}
 54089  			return p + 32 + uintptr(i)*24
 54090  		}
 54091  	}
 54092  
 54093  	if createFlag == 0 {
 54094  		return uintptr(0)
 54095  	}
 54096  
 54097  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 54098  		return uintptr(0)
 54099  	}
 54100  
 54101  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 54102  		return uintptr(0)
 54103  	}
 54104  
 54105  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 54106  		return uintptr(0)
 54107  	}
 54108  
 54109  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 54110  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 54111  		i = 0
 54112  	__1:
 54113  		if !(i < TESTPCACHE_NPAGE) {
 54114  			goto __3
 54115  		}
 54116  		{
 54117  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey == uint32(0) {
 54118  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 54119  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 54120  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 54121  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 54122  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 54123  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 54124  
 54125  				return p + 32 + uintptr(j)*24
 54126  			}
 54127  
 54128  		}
 54129  		goto __2
 54130  	__2:
 54131  		i++
 54132  		j = (j + 1) % TESTPCACHE_NPAGE
 54133  		goto __1
 54134  		goto __3
 54135  	__3:
 54136  	}
 54137  
 54138  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 54139  		return uintptr(0)
 54140  	}
 54141  
 54142  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 54143  	i = 0
 54144  __4:
 54145  	if !(i < TESTPCACHE_NPAGE) {
 54146  		goto __6
 54147  	}
 54148  	{
 54149  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).FisPinned == 0 {
 54150  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 54151  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 54152  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 54153  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 54154  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 54155  
 54156  			return p + 32 + uintptr(j)*24
 54157  		}
 54158  
 54159  	}
 54160  	goto __5
 54161  __5:
 54162  	i++
 54163  	j = (j + 1) % TESTPCACHE_NPAGE
 54164  	goto __4
 54165  	goto __6
 54166  __6:
 54167  	;
 54168  	return uintptr(0)
 54169  }
 54170  
 54171  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 54172  	var p uintptr = pCache
 54173  	var i int32
 54174  
 54175  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 54176  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 54177  		discard = 1
 54178  	}
 54179  
 54180  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54181  		if p+32+uintptr(i)*24 == pOldPage {
 54182  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 54183  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 54184  
 54185  			if discard != 0 {
 54186  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54187  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 54188  
 54189  			}
 54190  			return
 54191  		}
 54192  	}
 54193  
 54194  }
 54195  
 54196  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 54197  	var p uintptr = pCache
 54198  	var i int32
 54199  
 54200  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54201  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == newKey {
 54202  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54203  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 54204  
 54205  			break
 54206  		}
 54207  	}
 54208  
 54209  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 54210  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == oldKey {
 54211  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = newKey
 54212  			return
 54213  		}
 54214  	}
 54215  
 54216  }
 54217  
 54218  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 54219  	var p uintptr = pCache
 54220  	var i uint32
 54221  
 54222  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 54223  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey >= iLimit {
 54224  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 54225  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0 {
 54226  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 54227  
 54228  			}
 54229  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 54230  
 54231  		}
 54232  	}
 54233  }
 54234  
 54235  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 54236  	var p uintptr = pCache
 54237  
 54238  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 54239  	sqlite3.Xsqlite3_free(tls, p)
 54240  	testpcacheGlobal.FnInstance--
 54241  }
 54242  
 54243  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 54244  	bp := tls.Alloc(24)
 54245  	defer tls.Free(24)
 54246  
 54247  	testpcacheGlobal.FdiscardChance = discardChance
 54248  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 54249  	testpcacheGlobal.FhighStress = highStress
 54250  	if installFlag != isInstalled {
 54251  		if installFlag != 0 {
 54252  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 54253  
 54254  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 54255  		} else {
 54256  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 54257  		}
 54258  		isInstalled = installFlag
 54259  	}
 54260  }
 54261  
 54262  var testPcache = sqlite3_pcache_methods2{
 54263  	FiVersion:   1,
 54264  	FpArg:       0,
 54265  	FxInit:      0,
 54266  	FxShutdown:  0,
 54267  	FxCreate:    0,
 54268  	FxCachesize: 0,
 54269  	FxPagecount: 0,
 54270  	FxFetch:     0,
 54271  	FxUnpin:     0,
 54272  	FxRekey:     0,
 54273  	FxTruncate:  0,
 54274  	FxDestroy:   0,
 54275  }
 54276  var defaultPcache sqlite3_pcache_methods2
 54277  var isInstalled int32 = 0
 54278  
 54279  type quota_FILE1 = struct {
 54280  	Ff     uintptr
 54281  	FiOfst sqlite3_int64
 54282  	FpFile uintptr
 54283  }
 54284  
 54285  type quota_FILE = quota_FILE1
 54286  
 54287  type quotaGroup1 = struct {
 54288  	FzPattern  uintptr
 54289  	FiLimit    sqlite3_int64
 54290  	FiSize     sqlite3_int64
 54291  	FxCallback uintptr
 54292  	FpArg      uintptr
 54293  	FxDestroy  uintptr
 54294  	FpNext     uintptr
 54295  	FppPrev    uintptr
 54296  	FpFiles    uintptr
 54297  }
 54298  
 54299  type quotaGroup = quotaGroup1
 54300  type quotaConn1 = struct {
 54301  	Fbase  sqlite3_file
 54302  	FpFile uintptr
 54303  }
 54304  
 54305  type quotaConn = quotaConn1
 54306  type quotaFile1 = struct {
 54307  	FzFilename     uintptr
 54308  	FpGroup        uintptr
 54309  	FiSize         sqlite3_int64
 54310  	FnRef          int32
 54311  	FdeleteOnClose int32
 54312  	FpNext         uintptr
 54313  	FppPrev        uintptr
 54314  }
 54315  
 54316  type quotaFile = quotaFile1
 54317  
 54318  var gQuota struct {
 54319  	FpOrigVfs      uintptr
 54320  	FsThisVfs      sqlite3_vfs
 54321  	FsIoMethodsV1  sqlite3_io_methods
 54322  	FsIoMethodsV2  sqlite3_io_methods
 54323  	FisInitialized int32
 54324  	F__ccgo_pad1   [4]byte
 54325  	FpMutex        uintptr
 54326  	FpGroup        uintptr
 54327  }
 54328  
 54329  func quotaEnter(tls *libc.TLS) {
 54330  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 54331  }
 54332  
 54333  func quotaLeave(tls *libc.TLS) {
 54334  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 54335  }
 54336  
 54337  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 54338  	var N int32 = 0
 54339  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54340  	for pFile != 0 {
 54341  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54342  			N++
 54343  		}
 54344  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54345  	}
 54346  	return N
 54347  }
 54348  
 54349  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 54350  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54351  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54352  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54353  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 54354  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 54355  	}
 54356  	sqlite3.Xsqlite3_free(tls, pFile)
 54357  }
 54358  
 54359  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 54360  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54361  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 54362  	}
 54363  }
 54364  
 54365  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 54366  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 54367  		quotaRemoveAllFiles(tls, pGroup)
 54368  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54369  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 54370  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 54371  		}
 54372  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 54373  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54374  		}
 54375  		sqlite3.Xsqlite3_free(tls, pGroup)
 54376  	}
 54377  }
 54378  
 54379  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 54380  	var c int32
 54381  	var c2 int32
 54382  	var cx int32
 54383  	var invert int32
 54384  	var seen int32
 54385  
 54386  	for libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 54387  		if c == '*' {
 54388  			for libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 54389  				if c == '?' && int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54390  					return 0
 54391  				}
 54392  			}
 54393  			if c == 0 {
 54394  				return 1
 54395  			} else if c == '[' {
 54396  				for *(*uint8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 54397  					z++
 54398  				}
 54399  				return libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z))) != 0)
 54400  			}
 54401  			if c == '/' {
 54402  				cx = '\\'
 54403  			} else {
 54404  				cx = c
 54405  			}
 54406  			for libc.AssignInt32(&c2, int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 54407  				for c2 != c && c2 != cx {
 54408  					c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54409  					if c2 == 0 {
 54410  						return 0
 54411  					}
 54412  				}
 54413  				if quotaStrglob(tls, zGlob, z) != 0 {
 54414  					return 1
 54415  				}
 54416  			}
 54417  			return 0
 54418  		} else if c == '?' {
 54419  			if int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54420  				return 0
 54421  			}
 54422  		} else if c == '[' {
 54423  			var prior_c int32 = 0
 54424  			seen = 0
 54425  			invert = 0
 54426  			c = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54427  			if c == 0 {
 54428  				return 0
 54429  			}
 54430  			c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54431  			if c2 == '^' {
 54432  				invert = 1
 54433  				c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54434  			}
 54435  			if c2 == ']' {
 54436  				if c == ']' {
 54437  					seen = 1
 54438  				}
 54439  				c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54440  			}
 54441  			for c2 != 0 && c2 != ']' {
 54442  				if c2 == '-' && int32(*(*uint8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*uint8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 54443  					c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54444  					if c >= prior_c && c <= c2 {
 54445  						seen = 1
 54446  					}
 54447  					prior_c = 0
 54448  				} else {
 54449  					if c == c2 {
 54450  						seen = 1
 54451  					}
 54452  					prior_c = c2
 54453  				}
 54454  				c2 = int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54455  			}
 54456  			if c2 == 0 || seen^invert == 0 {
 54457  				return 0
 54458  			}
 54459  		} else if c == '/' {
 54460  			if int32(*(*uint8)(unsafe.Pointer(z))) != '/' && int32(*(*uint8)(unsafe.Pointer(z))) != '\\' {
 54461  				return 0
 54462  			}
 54463  			z++
 54464  		} else {
 54465  			if c != int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 54466  				return 0
 54467  			}
 54468  		}
 54469  	}
 54470  	return libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z))) == 0)
 54471  }
 54472  
 54473  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 54474  	var p uintptr
 54475  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 54476  	}
 54477  	return p
 54478  }
 54479  
 54480  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 54481  	var p uintptr = pConn
 54482  	return p + 1*16
 54483  }
 54484  
 54485  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 54486  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54487  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 54488  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54489  	}
 54490  	if pFile == uintptr(0) && createFlag != 0 {
 54491  		var nName int32 = int32(libc.Xstrlen(tls, zName) & uint64(0x3fffffff))
 54492  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaFile{}))+uint64(nName)+uint64(1)))
 54493  		if pFile != 0 {
 54494  			libc.Xmemset(tls, pFile, 0, uint64(unsafe.Sizeof(quotaFile{})))
 54495  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*48
 54496  			libc.Xmemcpy(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint64(nName+1))
 54497  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54498  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54499  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 32
 54500  			}
 54501  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 64
 54502  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 54503  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 54504  		}
 54505  	}
 54506  	return pFile
 54507  }
 54508  
 54509  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 54510  	return zUtf8
 54511  }
 54512  
 54513  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 54514  }
 54515  
 54516  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 54517  	var rc int32
 54518  	var pQuotaOpen uintptr
 54519  	var pFile uintptr
 54520  	var pGroup uintptr
 54521  	var pSubOpen uintptr
 54522  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54523  
 54524  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 54525  		return (*struct {
 54526  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54527  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54528  	}
 54529  
 54530  	quotaEnter(tls)
 54531  	pGroup = quotaGroupFind(tls, zName)
 54532  	if pGroup == uintptr(0) {
 54533  		rc = (*struct {
 54534  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54535  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54536  	} else {
 54537  		pQuotaOpen = pConn
 54538  		pSubOpen = quotaSubOpen(tls, pConn)
 54539  		rc = (*struct {
 54540  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54541  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 54542  		if rc == SQLITE_OK {
 54543  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 54544  			if pFile == uintptr(0) {
 54545  				quotaLeave(tls)
 54546  				(*struct {
 54547  					f func(*libc.TLS, uintptr) int32
 54548  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54549  				return SQLITE_NOMEM
 54550  			}
 54551  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 54552  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54553  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 54554  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 54555  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 176
 54556  			} else {
 54557  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 328
 54558  			}
 54559  		}
 54560  	}
 54561  	quotaLeave(tls)
 54562  	return rc
 54563  }
 54564  
 54565  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 54566  	var rc int32
 54567  	var pFile uintptr
 54568  	var pGroup uintptr
 54569  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54570  
 54571  	rc = (*struct {
 54572  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54573  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 54574  
 54575  	if rc == SQLITE_OK {
 54576  		quotaEnter(tls)
 54577  		pGroup = quotaGroupFind(tls, zName)
 54578  		if pGroup != 0 {
 54579  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 54580  			if pFile != 0 {
 54581  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54582  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54583  				} else {
 54584  					quotaRemoveFile(tls, pFile)
 54585  					quotaGroupDeref(tls, pGroup)
 54586  				}
 54587  			}
 54588  		}
 54589  		quotaLeave(tls)
 54590  	}
 54591  	return rc
 54592  }
 54593  
 54594  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 54595  	var p uintptr = pConn
 54596  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54597  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54598  	var rc int32
 54599  	rc = (*struct {
 54600  		f func(*libc.TLS, uintptr) int32
 54601  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54602  	quotaEnter(tls)
 54603  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54604  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54605  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54606  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54607  			(*struct {
 54608  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 54609  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54610  			quotaRemoveFile(tls, pFile)
 54611  		}
 54612  		quotaGroupDeref(tls, pGroup)
 54613  	}
 54614  	quotaLeave(tls)
 54615  	return rc
 54616  }
 54617  
 54618  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54619  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54620  	return (*struct {
 54621  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54622  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54623  }
 54624  
 54625  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54626  	var p uintptr = pConn
 54627  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54628  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 54629  	var pGroup uintptr
 54630  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54631  	var szNew sqlite3_int64
 54632  
 54633  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54634  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54635  		quotaEnter(tls)
 54636  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54637  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54638  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54639  				(*struct {
 54640  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54641  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 54642  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54643  			}
 54644  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54645  				quotaLeave(tls)
 54646  				return SQLITE_FULL
 54647  			}
 54648  		}
 54649  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54650  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54651  		quotaLeave(tls)
 54652  	}
 54653  	return (*struct {
 54654  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54655  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54656  }
 54657  
 54658  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 54659  	var p uintptr = pConn
 54660  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54661  	var rc int32 = (*struct {
 54662  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54663  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 54664  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54665  	var pGroup uintptr
 54666  	if rc == SQLITE_OK {
 54667  		quotaEnter(tls)
 54668  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54669  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54670  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 54671  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += size
 54672  		quotaLeave(tls)
 54673  	}
 54674  	return rc
 54675  }
 54676  
 54677  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 54678  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54679  	return (*struct {
 54680  		f func(*libc.TLS, uintptr, int32) int32
 54681  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 54682  }
 54683  
 54684  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 54685  	bp := tls.Alloc(8)
 54686  	defer tls.Free(8)
 54687  
 54688  	var p uintptr = pConn
 54689  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54690  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54691  	var pGroup uintptr
 54692  
 54693  	var rc int32
 54694  
 54695  	rc = (*struct {
 54696  		f func(*libc.TLS, uintptr, uintptr) int32
 54697  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 54698  	if rc == SQLITE_OK {
 54699  		quotaEnter(tls)
 54700  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54701  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54702  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 54703  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 54704  		quotaLeave(tls)
 54705  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 54706  	}
 54707  	return rc
 54708  }
 54709  
 54710  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 54711  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54712  	return (*struct {
 54713  		f func(*libc.TLS, uintptr, int32) int32
 54714  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 54715  }
 54716  
 54717  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 54718  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54719  	return (*struct {
 54720  		f func(*libc.TLS, uintptr, int32) int32
 54721  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 54722  }
 54723  
 54724  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 54725  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54726  	return (*struct {
 54727  		f func(*libc.TLS, uintptr, uintptr) int32
 54728  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 54729  }
 54730  
 54731  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 54732  	bp := tls.Alloc(8)
 54733  	defer tls.Free(8)
 54734  
 54735  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54736  	var rc int32 = (*struct {
 54737  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54738  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 54739  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 54740  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35913, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 54741  	}
 54742  	return rc
 54743  }
 54744  
 54745  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 54746  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54747  	return (*struct {
 54748  		f func(*libc.TLS, uintptr) int32
 54749  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 54750  }
 54751  
 54752  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 54753  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54754  	return (*struct {
 54755  		f func(*libc.TLS, uintptr) int32
 54756  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 54757  }
 54758  
 54759  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 54760  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54761  	return (*struct {
 54762  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54763  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 54764  }
 54765  
 54766  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 54767  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54768  	return (*struct {
 54769  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54770  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 54771  }
 54772  
 54773  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 54774  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54775  	(*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)
 54776  }
 54777  
 54778  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 54779  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54780  	return (*struct {
 54781  		f func(*libc.TLS, uintptr, int32) int32
 54782  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 54783  }
 54784  
 54785  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 54786  	var pOrigVfs uintptr
 54787  	if gQuota.FisInitialized != 0 {
 54788  		return SQLITE_MISUSE
 54789  	}
 54790  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 54791  	if pOrigVfs == uintptr(0) {
 54792  		return SQLITE_ERROR
 54793  	}
 54794  
 54795  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 54796  	if !(int32(gQuota.FpMutex) != 0) {
 54797  		return SQLITE_NOMEM
 54798  	}
 54799  	gQuota.FisInitialized = 1
 54800  	gQuota.FpOrigVfs = pOrigVfs
 54801  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 54802  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 54803  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54804  	}{quotaOpen}))
 54805  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 54806  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54807  	}{quotaDelete}))
 54808  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(quotaConn{})))
 54809  	gQuota.FsThisVfs.FzName = ts + 35922
 54810  	gQuota.FsIoMethodsV1.FiVersion = 1
 54811  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 54812  		f func(*libc.TLS, uintptr) int32
 54813  	}{quotaClose}))
 54814  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 54815  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54816  	}{quotaRead}))
 54817  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 54818  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54819  	}{quotaWrite}))
 54820  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 54821  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54822  	}{quotaTruncate}))
 54823  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 54824  		f func(*libc.TLS, uintptr, int32) int32
 54825  	}{quotaSync}))
 54826  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 54827  		f func(*libc.TLS, uintptr, uintptr) int32
 54828  	}{quotaFileSize}))
 54829  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 54830  		f func(*libc.TLS, uintptr, int32) int32
 54831  	}{quotaLock}))
 54832  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 54833  		f func(*libc.TLS, uintptr, int32) int32
 54834  	}{quotaUnlock}))
 54835  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 54836  		f func(*libc.TLS, uintptr, uintptr) int32
 54837  	}{quotaCheckReservedLock}))
 54838  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 54839  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54840  	}{quotaFileControl}))
 54841  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 54842  		f func(*libc.TLS, uintptr) int32
 54843  	}{quotaSectorSize}))
 54844  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 54845  		f func(*libc.TLS, uintptr) int32
 54846  	}{quotaDeviceCharacteristics}))
 54847  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 54848  	gQuota.FsIoMethodsV2.FiVersion = 2
 54849  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 54850  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54851  	}{quotaShmMap}))
 54852  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 54853  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54854  	}{quotaShmLock}))
 54855  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 54856  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 54857  		f func(*libc.TLS, uintptr, int32) int32
 54858  	}{quotaShmUnmap}))
 54859  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+8, makeDefault)
 54860  	return SQLITE_OK
 54861  }
 54862  
 54863  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 54864  	var pGroup uintptr
 54865  	if gQuota.FisInitialized == 0 {
 54866  		return SQLITE_MISUSE
 54867  	}
 54868  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 54869  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 54870  			return SQLITE_MISUSE
 54871  		}
 54872  	}
 54873  	for gQuota.FpGroup != 0 {
 54874  		pGroup = gQuota.FpGroup
 54875  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54876  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 54877  
 54878  		quotaGroupDeref(tls, pGroup)
 54879  	}
 54880  	gQuota.FisInitialized = 0
 54881  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 54882  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+8)
 54883  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint64(unsafe.Sizeof(gQuota)))
 54884  	return SQLITE_OK
 54885  }
 54886  
 54887  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 54888  	var pGroup uintptr
 54889  	quotaEnter(tls)
 54890  	pGroup = gQuota.FpGroup
 54891  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 54892  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54893  	}
 54894  	if pGroup == uintptr(0) {
 54895  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & uint64(0x3fffffff))
 54896  		if iLimit <= int64(0) {
 54897  			quotaLeave(tls)
 54898  			return SQLITE_OK
 54899  		}
 54900  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaGroup{}))+uint64(nPattern)+uint64(1)))
 54901  		if pGroup == uintptr(0) {
 54902  			quotaLeave(tls)
 54903  			return SQLITE_NOMEM
 54904  		}
 54905  		libc.Xmemset(tls, pGroup, 0, uint64(unsafe.Sizeof(quotaGroup{})))
 54906  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*72
 54907  		libc.Xmemcpy(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint64(nPattern+1))
 54908  		if gQuota.FpGroup != 0 {
 54909  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 48
 54910  		}
 54911  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 54912  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 496
 54913  		gQuota.FpGroup = pGroup
 54914  	}
 54915  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 54916  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 54917  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 54918  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54919  	}
 54920  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 54921  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 54922  	quotaGroupDeref(tls, pGroup)
 54923  	quotaLeave(tls)
 54924  	return SQLITE_OK
 54925  }
 54926  
 54927  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 54928  	bp := tls.Alloc(16)
 54929  	defer tls.Free(16)
 54930  
 54931  	var zFull uintptr = uintptr(0)
 54932  	var fd uintptr
 54933  	var rc int32
 54934  	*(*int32)(unsafe.Pointer(bp)) = 0
 54935  
 54936  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 54937  
 54938  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 54939  	if fd == uintptr(0) {
 54940  		rc = SQLITE_NOMEM
 54941  	} else {
 54942  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 54943  		rc = (*struct {
 54944  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54945  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54946  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 54947  	}
 54948  
 54949  	if rc == SQLITE_OK {
 54950  		*(*uint8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+uint64(1)))) = uint8(0)
 54951  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+8, zFull, fd,
 54952  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 54953  		if rc == SQLITE_OK {
 54954  			(*struct {
 54955  				f func(*libc.TLS, uintptr, uintptr) int32
 54956  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+8)
 54957  			(*struct {
 54958  				f func(*libc.TLS, uintptr) int32
 54959  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 54960  		} else if rc == SQLITE_CANTOPEN {
 54961  			var pGroup uintptr
 54962  			var pFile uintptr
 54963  			quotaEnter(tls)
 54964  			pGroup = quotaGroupFind(tls, zFull)
 54965  			if pGroup != 0 {
 54966  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 54967  				if pFile != 0 {
 54968  					quotaRemoveFile(tls, pFile)
 54969  				}
 54970  			}
 54971  			quotaLeave(tls)
 54972  		}
 54973  	}
 54974  
 54975  	sqlite3.Xsqlite3_free(tls, fd)
 54976  	return rc
 54977  }
 54978  
 54979  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 54980  	var p uintptr
 54981  	var zFull uintptr
 54982  	var zFullTranslated uintptr
 54983  	var rc int32
 54984  	var pGroup uintptr
 54985  	var pFile uintptr
 54986  	p = uintptr(0)
 54987  	zFull = uintptr(0)
 54988  	zFullTranslated = uintptr(0)
 54989  
 54990  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54991  	if !(zFull == uintptr(0)) {
 54992  		goto __1
 54993  	}
 54994  	return uintptr(0)
 54995  __1:
 54996  	;
 54997  	rc = (*struct {
 54998  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54999  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 55000  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 55001  	if !(rc != 0) {
 55002  		goto __2
 55003  	}
 55004  	goto quota_fopen_error
 55005  __2:
 55006  	;
 55007  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 55008  	if !(p == uintptr(0)) {
 55009  		goto __3
 55010  	}
 55011  	goto quota_fopen_error
 55012  __3:
 55013  	;
 55014  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(quota_FILE{})))
 55015  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 55016  	if !(zFullTranslated == uintptr(0)) {
 55017  		goto __4
 55018  	}
 55019  	goto quota_fopen_error
 55020  __4:
 55021  	;
 55022  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 55023  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 55024  		goto __5
 55025  	}
 55026  	goto quota_fopen_error
 55027  __5:
 55028  	;
 55029  	quotaEnter(tls)
 55030  	pGroup = quotaGroupFind(tls, zFull)
 55031  	if !(pGroup != 0) {
 55032  		goto __6
 55033  	}
 55034  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 55035  	if !(pFile == uintptr(0)) {
 55036  		goto __7
 55037  	}
 55038  	quotaLeave(tls)
 55039  	goto quota_fopen_error
 55040  __7:
 55041  	;
 55042  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 55043  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 55044  __6:
 55045  	;
 55046  	quotaLeave(tls)
 55047  	sqlite3.Xsqlite3_free(tls, zFull)
 55048  	return p
 55049  
 55050  quota_fopen_error:
 55051  	quota_mbcs_free(tls, zFullTranslated)
 55052  	sqlite3.Xsqlite3_free(tls, zFull)
 55053  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 55054  		goto __8
 55055  	}
 55056  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55057  __8:
 55058  	;
 55059  	sqlite3.Xsqlite3_free(tls, p)
 55060  	return uintptr(0)
 55061  }
 55062  
 55063  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 55064  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55065  }
 55066  
 55067  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 55068  	var iOfst sqlite3_int64
 55069  	var iEnd sqlite3_int64
 55070  	var szNew sqlite3_int64
 55071  	var pFile uintptr
 55072  	var rc size_t
 55073  
 55074  	iOfst = libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55075  	iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 55076  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 55077  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 55078  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55079  		quotaEnter(tls)
 55080  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 55081  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 55082  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 55083  				(*struct {
 55084  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 55085  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 55086  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 55087  			}
 55088  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 55089  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55090  				nmemb = uint64(iEnd-iOfst) / size
 55091  				iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 55092  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 55093  			}
 55094  		}
 55095  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 55096  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 55097  		quotaLeave(tls)
 55098  	} else {
 55099  		pFile = uintptr(0)
 55100  	}
 55101  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55102  
 55103  	if rc < nmemb && pFile != 0 {
 55104  		var nWritten size_t = rc
 55105  		var iNewEnd sqlite3_int64 = sqlite3_int64(uint64(iOfst) + size*nWritten)
 55106  		if iNewEnd < iEnd {
 55107  			iNewEnd = iEnd
 55108  		}
 55109  		quotaEnter(tls)
 55110  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 16)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55111  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 55112  		quotaLeave(tls)
 55113  	}
 55114  	return rc
 55115  }
 55116  
 55117  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 55118  	var rc int32
 55119  	var pFile uintptr
 55120  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55121  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 55122  	if pFile != 0 {
 55123  		quotaEnter(tls)
 55124  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 55125  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 55126  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55127  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 55128  				(*struct {
 55129  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 55130  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 55131  				quotaRemoveFile(tls, pFile)
 55132  			}
 55133  			quotaGroupDeref(tls, pGroup)
 55134  		}
 55135  		quotaLeave(tls)
 55136  	}
 55137  	sqlite3.Xsqlite3_free(tls, p)
 55138  	return rc
 55139  }
 55140  
 55141  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 55142  	var rc int32
 55143  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55144  	if rc == 0 && doFsync != 0 {
 55145  		rc = libc.Xfsync(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff))
 55146  	}
 55147  	return libc.Bool32(rc != 0)
 55148  }
 55149  
 55150  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int64, whence int32) int32 {
 55151  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 55152  }
 55153  
 55154  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 55155  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55156  }
 55157  
 55158  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int64 {
 55159  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55160  }
 55161  
 55162  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 55163  	return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 55164  }
 55165  
 55166  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 55167  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 55168  	var rc int32
 55169  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 55170  		var pGroup uintptr
 55171  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 55172  			return -1
 55173  		}
 55174  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55175  		quotaEnter(tls)
 55176  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55177  		quotaLeave(tls)
 55178  	}
 55179  	rc = libc.Xftruncate(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), szNew)
 55180  	if pFile != 0 && rc == 0 {
 55181  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 55182  		quotaEnter(tls)
 55183  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 55184  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 55185  		quotaLeave(tls)
 55186  	}
 55187  	return rc
 55188  }
 55189  
 55190  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 55191  	bp := tls.Alloc(128)
 55192  	defer tls.Free(128)
 55193  
 55194  	var rc int32
 55195  
 55196  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 55197  	if rc == 0 {
 55198  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtim.Ftv_sec
 55199  	}
 55200  	return rc
 55201  }
 55202  
 55203  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 55204  	bp := tls.Alloc(128)
 55205  	defer tls.Free(128)
 55206  
 55207  	var rc int32
 55208  
 55209  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 55210  	if rc == 0 {
 55211  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 55212  	}
 55213  	return int64(-1)
 55214  }
 55215  
 55216  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 55217  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 55218  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 55219  	}
 55220  	return int64(-1)
 55221  }
 55222  
 55223  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int64 {
 55224  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 55225  	var pos1 int64
 55226  	var pos2 int64
 55227  	var rc int32
 55228  	pos1 = libc.Xftell(tls, f)
 55229  	if pos1 < int64(0) {
 55230  		return int64(-1)
 55231  	}
 55232  	rc = libc.Xfseek(tls, f, int64(0), SEEK_END)
 55233  	if rc != 0 {
 55234  		return int64(-1)
 55235  	}
 55236  	pos2 = libc.Xftell(tls, f)
 55237  	if pos2 < int64(0) {
 55238  		return int64(-1)
 55239  	}
 55240  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 55241  	if rc != 0 {
 55242  		return int64(-1)
 55243  	}
 55244  	return pos2 - pos1
 55245  }
 55246  
 55247  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 55248  	var zFull uintptr
 55249  	var nFull size_t
 55250  	var rc int32
 55251  	var pGroup uintptr
 55252  	var pFile uintptr
 55253  	var pNextFile uintptr
 55254  	var diff int32
 55255  	var c uint8
 55256  
 55257  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 55258  	if zFull == uintptr(0) {
 55259  		return SQLITE_NOMEM
 55260  	}
 55261  	rc = (*struct {
 55262  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55263  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 55264  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 55265  	if rc != 0 {
 55266  		sqlite3.Xsqlite3_free(tls, zFull)
 55267  		return rc
 55268  	}
 55269  
 55270  	nFull = libc.Xstrlen(tls, zFull)
 55271  	if nFull > uint64(0) && (int32(*(*uint8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '/' || int32(*(*uint8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '\\') {
 55272  		nFull--
 55273  		*(*uint8)(unsafe.Pointer(zFull + uintptr(nFull))) = uint8(0)
 55274  	}
 55275  
 55276  	quotaEnter(tls)
 55277  	pGroup = quotaGroupFind(tls, zFull)
 55278  	if pGroup != 0 {
 55279  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 55280  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 55281  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 55282  			if diff == 0 && (int32(libc.AssignUint8(&c, *(*uint8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 55283  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 55284  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 55285  				} else {
 55286  					rc = (*struct {
 55287  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 55288  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 55289  					quotaRemoveFile(tls, pFile)
 55290  					quotaGroupDeref(tls, pGroup)
 55291  				}
 55292  			}
 55293  		}
 55294  	}
 55295  	quotaLeave(tls)
 55296  	sqlite3.Xsqlite3_free(tls, zFull)
 55297  	return rc
 55298  }
 55299  
 55300  type TclQuotaCallback1 = struct {
 55301  	Finterp  uintptr
 55302  	FpScript uintptr
 55303  }
 55304  
 55305  type TclQuotaCallback = TclQuotaCallback1
 55306  
 55307  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 55308  	bp := tls.Alloc(16)
 55309  	defer tls.Free(16)
 55310  
 55311  	var p uintptr
 55312  	var pEval uintptr
 55313  	var pVarname uintptr
 55314  
 55315  	var rc int32
 55316  
 55317  	p = pArg
 55318  	if p == uintptr(0) {
 55319  		return
 55320  	}
 55321  
 55322  	pVarname = tcl.XTcl_NewStringObj(tls, ts+35928, -1)
 55323  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 55324  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 55325  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 55326  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 55327  
 55328  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 55329  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 55330  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 55331  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 55332  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 55333  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 55334  
 55335  	if rc == TCL_OK {
 55336  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 55337  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+8)
 55338  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 8))
 55339  		tcl.XTcl_UnsetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), uintptr(0), 0)
 55340  	}
 55341  
 55342  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55343  		var _objPtr uintptr = pEval
 55344  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55345  			tcl.XTclFreeObj(tls, _objPtr)
 55346  		}
 55347  	}
 55348  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 55349  		var _objPtr uintptr = pVarname
 55350  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55351  			tcl.XTclFreeObj(tls, _objPtr)
 55352  		}
 55353  	}
 55354  	if rc != TCL_OK {
 55355  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 55356  	}
 55357  }
 55358  
 55359  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 55360  	var p uintptr = pObj
 55361  	if p != 0 {
 55362  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55363  			var _objPtr uintptr = (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript
 55364  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55365  				tcl.XTclFreeObj(tls, _objPtr)
 55366  			}
 55367  		}
 55368  		sqlite3.Xsqlite3_free(tls, p)
 55369  	}
 55370  }
 55371  
 55372  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55373  	bp := tls.Alloc(4)
 55374  	defer tls.Free(4)
 55375  
 55376  	var zName uintptr
 55377  
 55378  	var rc int32
 55379  
 55380  	if objc != 3 {
 55381  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 55382  		return TCL_ERROR
 55383  	}
 55384  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55385  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55386  		return TCL_ERROR
 55387  	}
 55388  	if int32(*(*uint8)(unsafe.Pointer(zName))) == 0 {
 55389  		zName = uintptr(0)
 55390  	}
 55391  
 55392  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 55393  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55394  
 55395  	return TCL_OK
 55396  }
 55397  
 55398  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55399  	var rc int32
 55400  
 55401  	if objc != 1 {
 55402  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 55403  		return TCL_ERROR
 55404  	}
 55405  
 55406  	rc = sqlite3_quota_shutdown(tls)
 55407  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55408  
 55409  	return TCL_OK
 55410  }
 55411  
 55412  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55413  	bp := tls.Alloc(12)
 55414  	defer tls.Free(12)
 55415  
 55416  	var zPattern uintptr
 55417  
 55418  	var pScript uintptr
 55419  	var rc int32
 55420  	var p uintptr
 55421  
 55422  	var xDestroy uintptr
 55423  	var xCallback uintptr
 55424  
 55425  	if objc != 4 {
 55426  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35939)
 55427  		return TCL_ERROR
 55428  	}
 55429  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55430  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55431  		return TCL_ERROR
 55432  	}
 55433  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 55434  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 55435  
 55436  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 55437  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 55438  		if !(p != 0) {
 55439  			tcl.XTcl_SetResult(tls, interp, ts+32746, uintptr(0))
 55440  			return TCL_OK
 55441  		}
 55442  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TclQuotaCallback{})))
 55443  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 55444  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 55445  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 55446  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 55447  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 55448  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 55449  		}{tclQuotaCallback}))
 55450  	} else {
 55451  		p = uintptr(0)
 55452  		xDestroy = uintptr(0)
 55453  		xCallback = uintptr(0)
 55454  	}
 55455  
 55456  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 55457  
 55458  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55459  	return TCL_OK
 55460  }
 55461  
 55462  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55463  	var zFilename uintptr
 55464  	var rc int32
 55465  
 55466  	if objc != 2 {
 55467  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55468  		return TCL_ERROR
 55469  	}
 55470  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55471  
 55472  	rc = sqlite3_quota_file(tls, zFilename)
 55473  
 55474  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55475  	return TCL_OK
 55476  }
 55477  
 55478  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55479  	bp := tls.Alloc(1008)
 55480  	defer tls.Free(1008)
 55481  
 55482  	var pResult uintptr
 55483  	var pGroupTerm uintptr
 55484  	var pFileTerm uintptr
 55485  	var pGroup uintptr
 55486  	var pFile uintptr
 55487  
 55488  	pResult = tcl.XTcl_NewObj(tls)
 55489  	quotaEnter(tls)
 55490  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 55491  		pGroupTerm = tcl.XTcl_NewObj(tls)
 55492  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55493  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 55494  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55495  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 55496  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55497  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 55498  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 55499  			var i int32
 55500  
 55501  			pFileTerm = tcl.XTcl_NewObj(tls)
 55502  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]uint8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 55503  			for i = 0; *(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 55504  				if int32(*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 55505  					*(*uint8)(unsafe.Pointer(bp + 8 + uintptr(i))) = uint8('/')
 55506  				}
 55507  			}
 55508  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55509  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 55510  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55511  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 55512  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55513  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 55514  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55515  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 55516  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 55517  		}
 55518  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 55519  	}
 55520  	quotaLeave(tls)
 55521  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 55522  	return TCL_OK
 55523  }
 55524  
 55525  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55526  	bp := tls.Alloc(58)
 55527  	defer tls.Free(58)
 55528  
 55529  	var zFilename uintptr
 55530  	var zMode uintptr
 55531  	var p uintptr
 55532  
 55533  	if objc != 3 {
 55534  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35960)
 55535  		return TCL_ERROR
 55536  	}
 55537  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55538  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 55539  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 55540  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+8, ts+9889, libc.VaList(bp, p))
 55541  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 55542  	return TCL_OK
 55543  }
 55544  
 55545  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55546  	bp := tls.Alloc(8)
 55547  	defer tls.Free(8)
 55548  
 55549  	var p uintptr
 55550  	var zBuf uintptr
 55551  
 55552  	var got size_t
 55553  
 55554  	if objc != 4 {
 55555  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35974)
 55556  		return TCL_ERROR
 55557  	}
 55558  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55559  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55560  		return TCL_ERROR
 55561  	}
 55562  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 55563  		return TCL_ERROR
 55564  	}
 55565  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 55566  	if zBuf == uintptr(0) {
 55567  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 55568  		return TCL_ERROR
 55569  	}
 55570  	got = sqlite3_quota_fread(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55571  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = uint8(0)
 55572  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 55573  	sqlite3.Xsqlite3_free(tls, zBuf)
 55574  	return TCL_OK
 55575  }
 55576  
 55577  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55578  	bp := tls.Alloc(8)
 55579  	defer tls.Free(8)
 55580  
 55581  	var p uintptr
 55582  	var zBuf uintptr
 55583  
 55584  	var got size_t
 55585  
 55586  	if objc != 5 {
 55587  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35992)
 55588  		return TCL_ERROR
 55589  	}
 55590  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55591  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55592  		return TCL_ERROR
 55593  	}
 55594  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 55595  		return TCL_ERROR
 55596  	}
 55597  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 55598  	got = sqlite3_quota_fwrite(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55599  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 55600  	return TCL_OK
 55601  }
 55602  
 55603  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55604  	var p uintptr
 55605  	var rc int32
 55606  
 55607  	if objc != 2 {
 55608  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55609  		return TCL_ERROR
 55610  	}
 55611  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55612  	rc = sqlite3_quota_fclose(tls, p)
 55613  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55614  	return TCL_OK
 55615  }
 55616  
 55617  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55618  	bp := tls.Alloc(4)
 55619  	defer tls.Free(4)
 55620  
 55621  	var p uintptr
 55622  	var rc int32
 55623  	*(*int32)(unsafe.Pointer(bp)) = 0
 55624  
 55625  	if objc != 2 && objc != 3 {
 55626  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36018)
 55627  		return TCL_ERROR
 55628  	}
 55629  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55630  	if objc == 3 {
 55631  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55632  			return TCL_ERROR
 55633  		}
 55634  	}
 55635  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 55636  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55637  	return TCL_OK
 55638  }
 55639  
 55640  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55641  	bp := tls.Alloc(20)
 55642  	defer tls.Free(20)
 55643  
 55644  	var p uintptr
 55645  
 55646  	var zWhence uintptr
 55647  	var whence int32
 55648  	var rc int32
 55649  
 55650  	if objc != 4 {
 55651  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36036)
 55652  		return TCL_ERROR
 55653  	}
 55654  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55655  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 55656  		return TCL_ERROR
 55657  	}
 55658  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 55659  	if libc.Xstrcmp(tls, zWhence, ts+36057) == 0 {
 55660  		whence = SEEK_SET
 55661  	} else if libc.Xstrcmp(tls, zWhence, ts+36066) == 0 {
 55662  		whence = SEEK_CUR
 55663  	} else if libc.Xstrcmp(tls, zWhence, ts+36075) == 0 {
 55664  		whence = SEEK_END
 55665  	} else {
 55666  		tcl.XTcl_AppendResult(tls, interp,
 55667  			libc.VaList(bp, ts+36084, uintptr(0)))
 55668  		return TCL_ERROR
 55669  	}
 55670  	rc = sqlite3_quota_fseek(tls, p, int64(*(*int32)(unsafe.Pointer(bp + 16))), whence)
 55671  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55672  	return TCL_OK
 55673  }
 55674  
 55675  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55676  	var p uintptr
 55677  	if objc != 2 {
 55678  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55679  		return TCL_ERROR
 55680  	}
 55681  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55682  	sqlite3_quota_rewind(tls, p)
 55683  	return TCL_OK
 55684  }
 55685  
 55686  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55687  	var p uintptr
 55688  	var x sqlite3_int64
 55689  	if objc != 2 {
 55690  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55691  		return TCL_ERROR
 55692  	}
 55693  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55694  	x = sqlite3_quota_ftell(tls, p)
 55695  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55696  	return TCL_OK
 55697  }
 55698  
 55699  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55700  	bp := tls.Alloc(8)
 55701  	defer tls.Free(8)
 55702  
 55703  	var p uintptr
 55704  	var x sqlite3_int64
 55705  
 55706  	var rc int32
 55707  	if objc != 3 {
 55708  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36133)
 55709  		return TCL_ERROR
 55710  	}
 55711  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55712  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55713  		return TCL_ERROR
 55714  	}
 55715  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 55716  	rc = sqlite3_quota_ftruncate(tls, p, x)
 55717  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55718  	return TCL_OK
 55719  }
 55720  
 55721  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55722  	var p uintptr
 55723  	var x sqlite3_int64
 55724  	if objc != 2 {
 55725  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55726  		return TCL_ERROR
 55727  	}
 55728  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55729  	x = sqlite3_quota_file_size(tls, p)
 55730  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55731  	return TCL_OK
 55732  }
 55733  
 55734  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55735  	var p uintptr
 55736  	var x sqlite3_int64
 55737  	if objc != 2 {
 55738  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55739  		return TCL_ERROR
 55740  	}
 55741  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55742  	x = sqlite3_quota_file_truesize(tls, p)
 55743  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55744  	return TCL_OK
 55745  }
 55746  
 55747  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55748  	bp := tls.Alloc(8)
 55749  	defer tls.Free(8)
 55750  
 55751  	var p uintptr
 55752  
 55753  	if objc != 2 {
 55754  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55755  		return TCL_ERROR
 55756  	}
 55757  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55758  	*(*time_t)(unsafe.Pointer(bp)) = int64(0)
 55759  	sqlite3_quota_file_mtime(tls, p, bp)
 55760  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*time_t)(unsafe.Pointer(bp))))
 55761  	return TCL_OK
 55762  }
 55763  
 55764  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55765  	var zFilename uintptr
 55766  	var rc int32
 55767  	if objc != 2 {
 55768  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55769  		return TCL_ERROR
 55770  	}
 55771  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55772  	rc = sqlite3_quota_remove(tls, zFilename)
 55773  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55774  	return TCL_OK
 55775  }
 55776  
 55777  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55778  	var zPattern uintptr
 55779  	var zText uintptr
 55780  	var rc int32
 55781  	if objc != 3 {
 55782  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36145)
 55783  		return TCL_ERROR
 55784  	}
 55785  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55786  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 55787  	rc = quotaStrglob(tls, zPattern, zText)
 55788  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55789  	return TCL_OK
 55790  }
 55791  
 55792  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55793  	var p uintptr
 55794  	var x sqlite3_int64
 55795  	if objc != 2 {
 55796  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55797  		return TCL_ERROR
 55798  	}
 55799  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55800  	x = sqlite3_quota_file_available(tls, p)
 55801  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55802  	return TCL_OK
 55803  }
 55804  
 55805  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55806  	var p uintptr
 55807  	var x int32
 55808  	if objc != 2 {
 55809  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55810  		return TCL_ERROR
 55811  	}
 55812  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55813  	x = sqlite3_quota_ferror(tls, p)
 55814  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 55815  	return TCL_OK
 55816  }
 55817  
 55818  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 55819  	var i int32
 55820  
 55821  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd9))/uint64(unsafe.Sizeof(struct {
 55822  		FzName uintptr
 55823  		FxProc uintptr
 55824  	}{})); i++ {
 55825  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 55826  	}
 55827  
 55828  	return TCL_OK
 55829  }
 55830  
 55831  var aCmd9 = [21]struct {
 55832  	FzName uintptr
 55833  	FxProc uintptr
 55834  }{
 55835  	{FzName: ts + 36158, FxProc: 0},
 55836  	{FzName: ts + 36183, FxProc: 0},
 55837  	{FzName: ts + 36206, FxProc: 0},
 55838  	{FzName: ts + 36224, FxProc: 0},
 55839  	{FzName: ts + 36243, FxProc: 0},
 55840  	{FzName: ts + 36262, FxProc: 0},
 55841  	{FzName: ts + 36282, FxProc: 0},
 55842  	{FzName: ts + 36302, FxProc: 0},
 55843  	{FzName: ts + 36323, FxProc: 0},
 55844  	{FzName: ts + 36344, FxProc: 0},
 55845  	{FzName: ts + 36365, FxProc: 0},
 55846  	{FzName: ts + 36385, FxProc: 0},
 55847  	{FzName: ts + 36406, FxProc: 0},
 55848  	{FzName: ts + 36426, FxProc: 0},
 55849  	{FzName: ts + 36450, FxProc: 0},
 55850  	{FzName: ts + 36474, FxProc: 0},
 55851  	{FzName: ts + 36502, FxProc: 0},
 55852  	{FzName: ts + 36527, FxProc: 0},
 55853  	{FzName: ts + 36548, FxProc: 0},
 55854  	{FzName: ts + 36567, FxProc: 0},
 55855  	{FzName: ts + 36596, FxProc: 0},
 55856  }
 55857  
 55858  type Circle1 = struct {
 55859  	FaBox [2]struct {
 55860  		Fxmin float64
 55861  		Fxmax float64
 55862  		Fymin float64
 55863  		Fymax float64
 55864  	}
 55865  	Fcenterx     float64
 55866  	Fcentery     float64
 55867  	Fradius      float64
 55868  	FmxArea      float64
 55869  	FeScoreType  int32
 55870  	F__ccgo_pad1 [4]byte
 55871  }
 55872  
 55873  type Circle = Circle1
 55874  type Box = struct {
 55875  	Fxmin float64
 55876  	Fxmax float64
 55877  	Fymin float64
 55878  	Fymax float64
 55879  }
 55880  
 55881  func circle_del(tls *libc.TLS, p uintptr) {
 55882  	sqlite3.Xsqlite3_free(tls, p)
 55883  }
 55884  
 55885  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 55886  	var i int32
 55887  	var pCircle uintptr
 55888  	var xmin float64
 55889  	var xmax float64
 55890  	var ymin float64
 55891  	var ymax float64
 55892  
 55893  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 55894  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 55895  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 55896  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 55897  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55898  	if pCircle == uintptr(0) {
 55899  		if nCoord != 4 {
 55900  			return SQLITE_ERROR
 55901  		}
 55902  
 55903  		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 {
 55904  			return SQLITE_ERROR
 55905  		}
 55906  
 55907  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55908  		if !(pCircle != 0) {
 55909  			return SQLITE_NOMEM
 55910  		}
 55911  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55912  
 55913  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55914  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55915  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55916  
 55917  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55918  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55919  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55920  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55921  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55922  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55923  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55924  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55925  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 55926  	}
 55927  
 55928  	for i = 0; i < 4; i++ {
 55929  		var x float64
 55930  		if i&0x01 != 0 {
 55931  			x = xmax
 55932  		} else {
 55933  			x = xmin
 55934  		}
 55935  		var y float64
 55936  		if i&0x02 != 0 {
 55937  			y = ymax
 55938  		} else {
 55939  			y = ymin
 55940  		}
 55941  		var d2 float64
 55942  
 55943  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55944  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55945  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55946  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55947  			return SQLITE_OK
 55948  		}
 55949  	}
 55950  
 55951  	for i = 0; i < 2; i++ {
 55952  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55953  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55954  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55955  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55956  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55957  			return SQLITE_OK
 55958  		}
 55959  	}
 55960  
 55961  	*(*int32)(unsafe.Pointer(pRes)) = 0
 55962  	return SQLITE_OK
 55963  }
 55964  
 55965  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 55966  	var i int32
 55967  	var pCircle uintptr
 55968  	var xmin float64
 55969  	var xmax float64
 55970  	var ymin float64
 55971  	var ymax float64
 55972  	var nWithin int32 = 0
 55973  
 55974  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55975  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55976  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55977  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55978  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 55979  	if pCircle == uintptr(0) {
 55980  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 55981  			return SQLITE_ERROR
 55982  		}
 55983  
 55984  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 55985  			return SQLITE_ERROR
 55986  		}
 55987  
 55988  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55989  		if !(pCircle != 0) {
 55990  			return SQLITE_NOMEM
 55991  		}
 55992  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55993  
 55994  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 55995  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55996  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55997  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55998  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 55999  		} else {
 56000  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 56001  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 56002  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 56003  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 56004  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 56005  			for z != 0 && *(*uint8)(unsafe.Pointer(z)) != 0 {
 56006  				if int32(*(*uint8)(unsafe.Pointer(z))) == 'r' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56007  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 56008  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == 'x' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56009  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 56010  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == 'y' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56011  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 56012  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == 'e' && int32(*(*uint8)(unsafe.Pointer(z + 1))) == ':' {
 56013  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 56014  				} else if int32(*(*uint8)(unsafe.Pointer(z))) == ' ' {
 56015  					z++
 56016  					continue
 56017  				}
 56018  				for int32(*(*uint8)(unsafe.Pointer(z))) != 0 && int32(*(*uint8)(unsafe.Pointer(z))) != ' ' {
 56019  					z++
 56020  				}
 56021  				for int32(*(*uint8)(unsafe.Pointer(z))) == ' ' {
 56022  					z++
 56023  				}
 56024  			}
 56025  		}
 56026  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 56027  			sqlite3.Xsqlite3_free(tls, pCircle)
 56028  			return SQLITE_NOMEM
 56029  		}
 56030  
 56031  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 56032  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 56033  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56034  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56035  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56036  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 56037  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 56038  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 56039  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 56040  	}
 56041  
 56042  	for i = 0; i < 4; i++ {
 56043  		var x float64
 56044  		if i&0x01 != 0 {
 56045  			x = xmax
 56046  		} else {
 56047  			x = xmin
 56048  		}
 56049  		var y float64
 56050  		if i&0x02 != 0 {
 56051  			y = ymax
 56052  		} else {
 56053  			y = ymin
 56054  		}
 56055  		var d2 float64
 56056  
 56057  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 56058  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 56059  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 56060  			nWithin++
 56061  		}
 56062  	}
 56063  
 56064  	if nWithin == 0 {
 56065  		for i = 0; i < 2; i++ {
 56066  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 56067  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 56068  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 56069  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 56070  				nWithin = 1
 56071  				break
 56072  			}
 56073  		}
 56074  	}
 56075  
 56076  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 56077  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56078  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 56079  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56080  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 56081  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 56082  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 56083  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 56084  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 56085  			}
 56086  		} else {
 56087  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 56088  		}
 56089  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 56090  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56091  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 56092  			nWithin = 0
 56093  		}
 56094  	} else {
 56095  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56096  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 56097  			nWithin = 0
 56098  		}
 56099  	}
 56100  	if nWithin == 0 {
 56101  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 56102  	} else if nWithin >= 4 {
 56103  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 56104  	} else {
 56105  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 56106  	}
 56107  	return SQLITE_OK
 56108  }
 56109  
 56110  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 56111  	var x0 float64
 56112  	var x1 float64
 56113  	var y0 float64
 56114  	var y1 float64
 56115  	var bx0 float64
 56116  	var bx1 float64
 56117  	var by0 float64
 56118  	var by1 float64
 56119  
 56120  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 56121  		return SQLITE_ERROR
 56122  	}
 56123  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 56124  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 56125  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 56126  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 56127  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 56128  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 56129  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 56130  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 56131  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 56132  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 56133  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 56134  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 56135  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 56136  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 56137  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 56138  	} else {
 56139  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 56140  	}
 56141  	return SQLITE_OK
 56142  }
 56143  
 56144  type Cube1 = struct {
 56145  	Fx      float64
 56146  	Fy      float64
 56147  	Fz      float64
 56148  	Fwidth  float64
 56149  	Fheight float64
 56150  	Fdepth  float64
 56151  }
 56152  
 56153  type Cube = Cube1
 56154  
 56155  func cube_context_free(tls *libc.TLS, p uintptr) {
 56156  	sqlite3.Xsqlite3_free(tls, p)
 56157  }
 56158  
 56159  var gHere int32 = 42
 56160  
 56161  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 56162  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 56163  
 56164  	if pCube == uintptr(0) {
 56165  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 56166  			*(*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 {
 56167  			return SQLITE_ERROR
 56168  		}
 56169  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 56170  		if !(pCube != 0) {
 56171  			return SQLITE_NOMEM
 56172  		}
 56173  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 56174  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 56175  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 56176  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 56177  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 56178  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 56179  
 56180  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 56181  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 56182  	}
 56183  
 56184  	*(*int32)(unsafe.Pointer(piRes)) = 0
 56185  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 56186  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 56187  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 56188  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 56189  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 56190  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 56191  		*(*int32)(unsafe.Pointer(piRes)) = 1
 56192  	}
 56193  
 56194  	return SQLITE_OK
 56195  }
 56196  
 56197  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56198  	bp := tls.Alloc(8)
 56199  	defer tls.Free(8)
 56200  
 56201  	var rc int32
 56202  
 56203  	if objc != 2 {
 56204  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56205  		return TCL_ERROR
 56206  	}
 56207  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56208  		return TCL_ERROR
 56209  	}
 56210  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36617, *(*uintptr)(unsafe.Pointer(&struct {
 56211  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 56212  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 56213  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 56214  	return TCL_OK
 56215  }
 56216  
 56217  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56218  	bp := tls.Alloc(8)
 56219  	defer tls.Free(8)
 56220  
 56221  	var rc int32
 56222  
 56223  	if objc != 2 {
 56224  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56225  		return TCL_ERROR
 56226  	}
 56227  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56228  		return TCL_ERROR
 56229  	}
 56230  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36622, *(*uintptr)(unsafe.Pointer(&struct {
 56231  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 56232  	}{circle_geom})), uintptr(0))
 56233  	if rc == SQLITE_OK {
 56234  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36629,
 56235  			*(*uintptr)(unsafe.Pointer(&struct {
 56236  				f func(*libc.TLS, uintptr) int32
 56237  			}{circle_query_func})), uintptr(0), uintptr(0))
 56238  	}
 56239  	if rc == SQLITE_OK {
 56240  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36637,
 56241  			*(*uintptr)(unsafe.Pointer(&struct {
 56242  				f func(*libc.TLS, uintptr) int32
 56243  			}{bfs_query_func})), uintptr(0), uintptr(0))
 56244  	}
 56245  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 56246  	return TCL_OK
 56247  }
 56248  
 56249  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 56250  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36656, *(*uintptr)(unsafe.Pointer(&struct {
 56251  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56252  	}{register_cube_geom})), uintptr(0), uintptr(0))
 56253  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36675, *(*uintptr)(unsafe.Pointer(&struct {
 56254  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56255  	}{register_circle_geom})), uintptr(0), uintptr(0))
 56256  	return TCL_OK
 56257  }
 56258  
 56259  type fd_set5 = struct{ Ffds_bits [16]int64 }
 56260  
 56261  type schema_vtab1 = struct {
 56262  	Fbase sqlite3_vtab
 56263  	Fdb   uintptr
 56264  }
 56265  
 56266  type schema_vtab = schema_vtab1
 56267  type schema_cursor1 = struct {
 56268  	Fbase        sqlite3_vtab_cursor
 56269  	FpDbList     uintptr
 56270  	FpTableList  uintptr
 56271  	FpColumnList uintptr
 56272  	Frowid       int32
 56273  	F__ccgo_pad1 [4]byte
 56274  }
 56275  
 56276  type schema_cursor = schema_cursor1
 56277  
 56278  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 56279  	sqlite3.Xsqlite3_free(tls, pVtab)
 56280  	return 0
 56281  }
 56282  
 56283  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 56284  	var rc int32 = SQLITE_NOMEM
 56285  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 56286  	if pVtab != 0 {
 56287  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(schema_vtab{})))
 56288  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 56289  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36696)
 56290  	}
 56291  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 56292  	return rc
 56293  }
 56294  
 56295  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 56296  	var rc int32 = SQLITE_NOMEM
 56297  	var pCur uintptr
 56298  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 56299  	if pCur != 0 {
 56300  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(schema_cursor{})))
 56301  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 56302  		rc = SQLITE_OK
 56303  	}
 56304  	return rc
 56305  }
 56306  
 56307  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 56308  	var pCur uintptr = cur
 56309  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 56310  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 56311  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 56312  	sqlite3.Xsqlite3_free(tls, pCur)
 56313  	return SQLITE_OK
 56314  }
 56315  
 56316  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 56317  	var pCur uintptr = cur
 56318  	switch i {
 56319  	case 0:
 56320  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 56321  		break
 56322  	case 1:
 56323  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 56324  		break
 56325  	default:
 56326  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 56327  		break
 56328  	}
 56329  	return SQLITE_OK
 56330  }
 56331  
 56332  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 56333  	var pCur uintptr = cur
 56334  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 56335  	return SQLITE_OK
 56336  }
 56337  
 56338  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 56339  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 56340  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 56341  	return rc
 56342  }
 56343  
 56344  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 56345  	var pCur uintptr = cur
 56346  	return func() int32 {
 56347  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 56348  			return 0
 56349  		}
 56350  		return 1
 56351  	}()
 56352  }
 56353  
 56354  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 56355  	bp := tls.Alloc(24)
 56356  	defer tls.Free(24)
 56357  
 56358  	var rc int32
 56359  	var pCur uintptr
 56360  	var pVtab uintptr
 56361  	var zSql uintptr
 56362  	var pDbList uintptr
 56363  	rc = SQLITE_OK
 56364  	pCur = cur
 56365  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 56366  	zSql = uintptr(0)
 56367  
 56368  __1:
 56369  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 56370  		goto __2
 56371  	}
 56372  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+24))) {
 56373  		goto __3
 56374  	}
 56375  	goto next_exit
 56376  __3:
 56377  	;
 56378  __4:
 56379  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 56380  		goto __5
 56381  	}
 56382  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+16))) {
 56383  		goto __6
 56384  	}
 56385  	goto next_exit
 56386  __6:
 56387  	;
 56388  __7:
 56389  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 56390  		goto __8
 56391  	}
 56392  	rc = finalize(tls, pCur+8)
 56393  	goto next_exit
 56394  	goto __7
 56395  __8:
 56396  	;
 56397  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 56398  		goto __9
 56399  	}
 56400  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56401  		ts+36768, 0)
 56402  	goto __10
 56403  __9:
 56404  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 56405  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56406  		ts+36823,
 56407  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 56408  __10:
 56409  	;
 56410  	if !!(zSql != 0) {
 56411  		goto __11
 56412  	}
 56413  	rc = SQLITE_NOMEM
 56414  	goto next_exit
 56415  __11:
 56416  	;
 56417  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+16, uintptr(0))
 56418  	sqlite3.Xsqlite3_free(tls, zSql)
 56419  	if !(rc != SQLITE_OK) {
 56420  		goto __12
 56421  	}
 56422  	goto next_exit
 56423  __12:
 56424  	;
 56425  	goto __4
 56426  __5:
 56427  	;
 56428  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+36876,
 56429  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 56430  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 56431  
 56432  	if !!(zSql != 0) {
 56433  		goto __13
 56434  	}
 56435  	rc = SQLITE_NOMEM
 56436  	goto next_exit
 56437  __13:
 56438  	;
 56439  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+24, uintptr(0))
 56440  	sqlite3.Xsqlite3_free(tls, zSql)
 56441  	if !(rc != SQLITE_OK) {
 56442  		goto __14
 56443  	}
 56444  	goto next_exit
 56445  __14:
 56446  	;
 56447  	goto __1
 56448  __2:
 56449  	;
 56450  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 56451  
 56452  next_exit:
 56453  	return rc
 56454  }
 56455  
 56456  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56457  	var rc int32
 56458  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 56459  	var pCur uintptr = pVtabCursor
 56460  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 56461  	finalize(tls, pCur+16)
 56462  	finalize(tls, pCur+24)
 56463  	finalize(tls, pCur+8)
 56464  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+36901, -1, pCur+8, uintptr(0))
 56465  	return func() int32 {
 56466  		if rc == SQLITE_OK {
 56467  			return schemaNext(tls, pVtabCursor)
 56468  		}
 56469  		return rc
 56470  	}()
 56471  }
 56472  
 56473  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 56474  	return SQLITE_OK
 56475  }
 56476  
 56477  var schemaModule = sqlite3_module{
 56478  	FxCreate:     0,
 56479  	FxConnect:    0,
 56480  	FxBestIndex:  0,
 56481  	FxDisconnect: 0,
 56482  	FxDestroy:    0,
 56483  	FxOpen:       0,
 56484  	FxClose:      0,
 56485  	FxFilter:     0,
 56486  	FxNext:       0,
 56487  	FxEof:        0,
 56488  	FxColumn:     0,
 56489  	FxRowid:      0,
 56490  }
 56491  
 56492  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56493  	bp := tls.Alloc(8)
 56494  	defer tls.Free(8)
 56495  
 56496  	if objc != 2 {
 56497  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56498  		return TCL_ERROR
 56499  	}
 56500  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56501  		return TCL_ERROR
 56502  	}
 56503  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 56504  	return TCL_OK
 56505  }
 56506  
 56507  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 56508  	var i int32
 56509  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd12))/uint64(unsafe.Sizeof(struct {
 56510  		FzName      uintptr
 56511  		FxProc      uintptr
 56512  		FclientData uintptr
 56513  	}{})); i++ {
 56514  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 56515  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 56516  	}
 56517  	return TCL_OK
 56518  }
 56519  
 56520  var aObjCmd12 = [1]struct {
 56521  	FzName      uintptr
 56522  	FxProc      uintptr
 56523  	FclientData uintptr
 56524  }{
 56525  	{FzName: ts + 36922, FxProc: 0},
 56526  }
 56527  
 56528  type SqlMessage1 = struct {
 56529  	Fop           int32
 56530  	F__ccgo_pad1  [4]byte
 56531  	FpDb          uintptr
 56532  	FpStmt        uintptr
 56533  	FerrCode      int32
 56534  	F__ccgo_pad2  [4]byte
 56535  	FzIn          uintptr
 56536  	FnByte        int32
 56537  	F__ccgo_pad3  [4]byte
 56538  	FzOut         uintptr
 56539  	FpNext        uintptr
 56540  	FpPrev        uintptr
 56541  	FclientMutex  pthread_mutex_t
 56542  	FclientWakeup pthread_cond_t
 56543  }
 56544  
 56545  type SqlMessage = SqlMessage1
 56546  
 56547  type ServerState = struct {
 56548  	FqueueMutex   pthread_mutex_t
 56549  	FserverMutex  pthread_mutex_t
 56550  	FserverWakeup pthread_cond_t
 56551  	FserverHalt   int32
 56552  	F__ccgo_pad1  [4]byte
 56553  	FpQueueHead   uintptr
 56554  	FpQueueTail   uintptr
 56555  }
 56556  
 56557  var g4 = ServerState{}
 56558  
 56559  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 56560  	libc.Xpthread_mutex_init(tls, pMsg+72, uintptr(0))
 56561  	libc.Xpthread_cond_init(tls, pMsg+120, uintptr(0))
 56562  
 56563  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56564  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 56565  	if g4.FpQueueHead == uintptr(0) {
 56566  		g4.FpQueueTail = pMsg
 56567  	} else {
 56568  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 56569  	}
 56570  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 56571  	g4.FpQueueHead = pMsg
 56572  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56573  
 56574  	libc.Xpthread_mutex_lock(tls, pMsg+72)
 56575  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+96)
 56576  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 56577  		libc.Xpthread_cond_wait(tls, pMsg+120, pMsg+72)
 56578  	}
 56579  	libc.Xpthread_mutex_unlock(tls, pMsg+72)
 56580  
 56581  	libc.Xpthread_mutex_destroy(tls, pMsg+72)
 56582  	libc.Xpthread_cond_destroy(tls, pMsg+120)
 56583  }
 56584  
 56585  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 56586  	bp := tls.Alloc(168)
 56587  	defer tls.Free(168)
 56588  
 56589  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 56590  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 56591  	sendToServer(tls, bp)
 56592  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 56593  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56594  }
 56595  
 56596  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 56597  	bp := tls.Alloc(168)
 56598  	defer tls.Free(168)
 56599  
 56600  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 56601  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56602  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 56603  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 56604  	sendToServer(tls, bp)
 56605  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 56606  	if pzTail != 0 {
 56607  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 56608  	}
 56609  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56610  }
 56611  
 56612  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 56613  	bp := tls.Alloc(168)
 56614  	defer tls.Free(168)
 56615  
 56616  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 56617  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56618  	sendToServer(tls, bp)
 56619  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56620  }
 56621  
 56622  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 56623  	bp := tls.Alloc(168)
 56624  	defer tls.Free(168)
 56625  
 56626  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 56627  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56628  	sendToServer(tls, bp)
 56629  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56630  }
 56631  
 56632  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 56633  	bp := tls.Alloc(168)
 56634  	defer tls.Free(168)
 56635  
 56636  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 56637  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56638  	sendToServer(tls, bp)
 56639  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56640  }
 56641  
 56642  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 56643  	bp := tls.Alloc(168)
 56644  	defer tls.Free(168)
 56645  
 56646  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 56647  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56648  	sendToServer(tls, bp)
 56649  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56650  }
 56651  
 56652  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 56653  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+48) != 0 {
 56654  		return uintptr(0)
 56655  	}
 56656  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 56657  	for !(g4.FserverHalt != 0) {
 56658  		var pMsg uintptr
 56659  
 56660  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56661  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 56662  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+96, uintptr(unsafe.Pointer(&g4)))
 56663  		}
 56664  		pMsg = g4.FpQueueTail
 56665  		if pMsg != 0 {
 56666  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 56667  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 56668  			} else {
 56669  				g4.FpQueueHead = uintptr(0)
 56670  			}
 56671  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 56672  		}
 56673  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56674  		if pMsg == uintptr(0) {
 56675  			break
 56676  		}
 56677  
 56678  		libc.Xpthread_mutex_lock(tls, pMsg+72)
 56679  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 56680  		case MSG_Open:
 56681  			{
 56682  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+8)
 56683  				break
 56684  
 56685  			}
 56686  		case MSG_Prepare:
 56687  			{
 56688  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 56689  					pMsg+16, pMsg+48)
 56690  				break
 56691  
 56692  			}
 56693  		case MSG_Step:
 56694  			{
 56695  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56696  				break
 56697  
 56698  			}
 56699  		case MSG_Reset:
 56700  			{
 56701  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56702  				break
 56703  
 56704  			}
 56705  		case MSG_Finalize:
 56706  			{
 56707  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56708  				break
 56709  
 56710  			}
 56711  		case MSG_Close:
 56712  			{
 56713  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 56714  				break
 56715  
 56716  			}
 56717  		}
 56718  
 56719  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 56720  		libc.Xpthread_mutex_unlock(tls, pMsg+72)
 56721  		libc.Xpthread_cond_signal(tls, pMsg+120)
 56722  	}
 56723  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+48)
 56724  	return uintptr(0)
 56725  }
 56726  
 56727  func sqlite3_server_start(tls *libc.TLS) {
 56728  	bp := tls.Alloc(8)
 56729  	defer tls.Free(8)
 56730  
 56731  	var rc int32
 56732  	g4.FserverHalt = 0
 56733  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 56734  		f func(*libc.TLS, uintptr) uintptr
 56735  	}{sqlite3_server})), uintptr(0))
 56736  	if rc == 0 {
 56737  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 56738  	}
 56739  }
 56740  
 56741  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 56742  	var p uintptr = sqlite3_server(tls, uintptr(0))
 56743  	*(*int32)(unsafe.Pointer(pnDecr))--
 56744  	return p
 56745  }
 56746  
 56747  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 56748  	bp := tls.Alloc(8)
 56749  	defer tls.Free(8)
 56750  
 56751  	var rc int32
 56752  	g4.FserverHalt = 0
 56753  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 56754  		f func(*libc.TLS, uintptr) uintptr
 56755  	}{serverWrapper})), pnDecr)
 56756  	if rc == 0 {
 56757  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 56758  	}
 56759  }
 56760  
 56761  func sqlite3_server_stop(tls *libc.TLS) {
 56762  	g4.FserverHalt = 1
 56763  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+96)
 56764  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+48)
 56765  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+48)
 56766  }
 56767  
 56768  type SuperlockBusy1 = struct {
 56769  	FxBusy       uintptr
 56770  	FpBusyArg    uintptr
 56771  	FnBusy       int32
 56772  	F__ccgo_pad1 [4]byte
 56773  }
 56774  
 56775  type SuperlockBusy = SuperlockBusy1
 56776  
 56777  type Superlock1 = struct {
 56778  	Fdb          uintptr
 56779  	FbWal        int32
 56780  	F__ccgo_pad1 [4]byte
 56781  }
 56782  
 56783  type Superlock = Superlock1
 56784  
 56785  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 56786  	var pBusy uintptr = pCtx
 56787  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 56788  		return 0
 56789  	}
 56790  	return (*struct {
 56791  		f func(*libc.TLS, uintptr, int32) int32
 56792  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 56793  }
 56794  
 56795  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 56796  	bp := tls.Alloc(8)
 56797  	defer tls.Free(8)
 56798  
 56799  	var rc int32
 56800  
 56801  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+36945, -1, bp, uintptr(0))
 56802  	if rc != SQLITE_OK {
 56803  		return rc
 56804  	}
 56805  
 56806  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 56807  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 56808  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 56809  		if zMode != 0 && libc.Xstrlen(tls, zMode) == uint64(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+29946, zMode, 3) == 0 {
 56810  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 56811  		}
 56812  	}
 56813  
 56814  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 56815  }
 56816  
 56817  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 56818  	var rc int32
 56819  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 56820  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 56821  		rc = (*struct {
 56822  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56823  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 56824  	}
 56825  	return rc
 56826  }
 56827  
 56828  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 56829  	bp := tls.Alloc(16)
 56830  	defer tls.Free(16)
 56831  
 56832  	var rc int32
 56833  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 56834  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 56835  
 56836  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 56837  	if rc != SQLITE_OK {
 56838  		return rc
 56839  	}
 56840  
 56841  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 56842  	if rc != SQLITE_OK {
 56843  		return rc
 56844  	}
 56845  
 56846  	rc = (*struct {
 56847  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 56848  	})(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)
 56849  	if rc != SQLITE_OK {
 56850  		return rc
 56851  	}
 56852  	libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0, uint64(32))
 56853  
 56854  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 56855  	return rc
 56856  }
 56857  
 56858  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 56859  	bp := tls.Alloc(8)
 56860  	defer tls.Free(8)
 56861  
 56862  	var p uintptr = pLock
 56863  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 56864  		var rc int32
 56865  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 56866  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 56867  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 56868  		if rc == SQLITE_OK {
 56869  			(*struct {
 56870  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56871  			})(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)
 56872  			(*struct {
 56873  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56874  			})(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)
 56875  		}
 56876  	}
 56877  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 56878  	sqlite3.Xsqlite3_free(tls, p)
 56879  }
 56880  
 56881  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 56882  	bp := tls.Alloc(24)
 56883  	defer tls.Free(24)
 56884  
 56885  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 56886  	var rc int32
 56887  	var pLock uintptr
 56888  
 56889  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 56890  	if !(pLock != 0) {
 56891  		return SQLITE_NOMEM
 56892  	}
 56893  	libc.Xmemset(tls, pLock, 0, uint64(unsafe.Sizeof(Superlock{})))
 56894  
 56895  	rc = sqlite3.Xsqlite3_open_v2(tls,
 56896  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 56897  
 56898  	if rc == SQLITE_OK {
 56899  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 56900  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 56901  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 56902  			f func(*libc.TLS, uintptr, int32) int32
 56903  		}{superlockBusyHandler})), bp)
 56904  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 56905  	}
 56906  
 56907  	if rc == SQLITE_OK {
 56908  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 56909  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 56910  			if rc == SQLITE_OK {
 56911  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 56912  			}
 56913  		}
 56914  	}
 56915  
 56916  	if rc != SQLITE_OK {
 56917  		sqlite3demo_superunlock(tls, pLock)
 56918  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 56919  	} else {
 56920  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 56921  	}
 56922  
 56923  	return rc
 56924  }
 56925  
 56926  type InterpAndScript1 = struct {
 56927  	Finterp  uintptr
 56928  	FpScript uintptr
 56929  }
 56930  
 56931  type InterpAndScript = InterpAndScript1
 56932  
 56933  func superunlock_del(tls *libc.TLS, cd ClientData) {
 56934  	sqlite3demo_superunlock(tls, cd)
 56935  }
 56936  
 56937  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56938  	if objc != 1 {
 56939  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 56940  		return TCL_ERROR
 56941  	}
 56942  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 56943  	return TCL_OK
 56944  }
 56945  
 56946  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 56947  	bp := tls.Alloc(4)
 56948  	defer tls.Free(4)
 56949  
 56950  	var p uintptr = pCtx
 56951  	var pEval uintptr
 56952  	*(*int32)(unsafe.Pointer(bp)) = 0
 56953  
 56954  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 56955  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 56956  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 56957  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 56958  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 56959  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56960  		var _objPtr uintptr = pEval
 56961  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56962  			tcl.XTclFreeObj(tls, _objPtr)
 56963  		}
 56964  	}
 56965  
 56966  	return *(*int32)(unsafe.Pointer(bp))
 56967  }
 56968  
 56969  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56970  	bp := tls.Alloc(40)
 56971  	defer tls.Free(40)
 56972  
 56973  	var zPath uintptr
 56974  	var zVfs uintptr = uintptr(0)
 56975  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 56976  	var xBusy uintptr = uintptr(0)
 56977  	var rc int32
 56978  
 56979  	if objc < 3 || objc > 5 {
 56980  		tcl.XTcl_WrongNumArgs(tls,
 56981  			interp, 1, objv, ts+36970)
 56982  		return TCL_ERROR
 56983  	}
 56984  
 56985  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56986  
 56987  	if objc > 3 {
 56988  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 56989  		if libc.Xstrlen(tls, zVfs) == uint64(0) {
 56990  			zVfs = uintptr(0)
 56991  		}
 56992  	}
 56993  	if objc > 4 {
 56994  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 56995  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 56996  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 56997  			f func(*libc.TLS, uintptr, int32) int32
 56998  		}{superlock_busy}))
 56999  	}
 57000  
 57001  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+32)
 57002  
 57003  	if rc != SQLITE_OK {
 57004  		tcl.XTcl_ResetResult(tls, interp)
 57005  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 57006  		return TCL_ERROR
 57007  	}
 57008  
 57009  	tcl.XTcl_CreateObjCommand(tls,
 57010  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 57011  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57012  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 57013  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 57014  	return TCL_OK
 57015  }
 57016  
 57017  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 57018  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37011, *(*uintptr)(unsafe.Pointer(&struct {
 57019  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57020  	}{superlock_cmd})), uintptr(0), uintptr(0))
 57021  	return TCL_OK
 57022  }
 57023  
 57024  type error_t = int32
 57025  
 57026  type TestSyscallGlobal = struct {
 57027  	FbPersist         int32
 57028  	FnCount           int32
 57029  	FnFail            int32
 57030  	Fpgsz             int32
 57031  	Forig_getpagesize sqlite3_syscall_ptr
 57032  }
 57033  
 57034  var gSyscall = TestSyscallGlobal{}
 57035  
 57036  type TestSyscallArray = struct {
 57037  	FzName         uintptr
 57038  	FxTest         sqlite3_syscall_ptr
 57039  	FxOrig         sqlite3_syscall_ptr
 57040  	Fdefault_errno int32
 57041  	Fcustom_errno  int32
 57042  }
 57043  
 57044  var aSyscall = [19]TestSyscallArray{
 57045  	{FzName: ts + 37033, FxTest: 0, Fdefault_errno: EACCES},
 57046  	{FzName: ts + 9490, FxTest: 0},
 57047  	{FzName: ts + 37038, FxTest: 0},
 57048  	{FzName: ts + 37045, FxTest: 0},
 57049  	{FzName: ts + 37052, FxTest: 0},
 57050  	{FzName: ts + 37057, FxTest: 0},
 57051  	{FzName: ts + 37063, FxTest: 0, Fdefault_errno: EIO},
 57052  	{FzName: ts + 37073, FxTest: 0, Fdefault_errno: EACCES},
 57053  	{FzName: ts + 25126, FxTest: 0},
 57054  	{FzName: ts + 37079, FxTest: 0},
 57055  	{FzName: ts + 37085, FxTest: 0},
 57056  	{FzName: ts + 25131, FxTest: 0},
 57057  	{FzName: ts + 37093, FxTest: 0},
 57058  	{FzName: ts + 37100, FxTest: 0},
 57059  	{FzName: ts + 37109, FxTest: 0},
 57060  	{FzName: ts + 37116, FxTest: 0},
 57061  	{FzName: ts + 29040, FxTest: 0},
 57062  	{FzName: ts + 37126, FxTest: 0},
 57063  	{},
 57064  }
 57065  
 57066  func tsIsFail(tls *libc.TLS) int32 {
 57067  	gSyscall.FnCount--
 57068  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 57069  		gSyscall.FnFail++
 57070  		return 1
 57071  	}
 57072  	return 0
 57073  }
 57074  
 57075  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 57076  	var i int32
 57077  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 57078  	for i = 0; aSyscall[i].FzName != 0; i++ {
 57079  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 57080  			continue
 57081  		}
 57082  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(nFunc)) != 0 {
 57083  			continue
 57084  		}
 57085  		return aSyscall[i].Fcustom_errno
 57086  	}
 57087  
 57088  	return 0
 57089  }
 57090  
 57091  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 57092  	if tsIsFail(tls) != 0 {
 57093  		*(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) = tsErrno(tls, zFunc)
 57094  		return 1
 57095  	}
 57096  	return 0
 57097  }
 57098  
 57099  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 57100  	if tsIsFailErrno(tls, ts+37033) != 0 {
 57101  		return -1
 57102  	}
 57103  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16)))(tls, zFile, flags, mode)
 57104  }
 57105  
 57106  func ts_close(tls *libc.TLS, fd int32) int32 {
 57107  	if tsIsFail(tls) != 0 {
 57108  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 57109  		return -1
 57110  	}
 57111  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 57112  }
 57113  
 57114  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 57115  	if tsIsFail(tls) != 0 {
 57116  		return -1
 57117  	}
 57118  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*32 + 16)))(tls, zPath, mode)
 57119  }
 57120  
 57121  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 57122  	if tsIsFail(tls) != 0 {
 57123  		return uintptr(0)
 57124  	}
 57125  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*32 + 16)))(tls, zPath, nPath)
 57126  }
 57127  
 57128  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 57129  	if tsIsFail(tls) != 0 {
 57130  		return -1
 57131  	}
 57132  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*32 + 16)))(tls, zPath, p)
 57133  }
 57134  
 57135  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 57136  	if tsIsFailErrno(tls, ts+37057) != 0 {
 57137  		return -1
 57138  	}
 57139  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*32 + 16)))(tls, fd, p)
 57140  }
 57141  
 57142  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 57143  	if tsIsFailErrno(tls, ts+37063) != 0 {
 57144  		return -1
 57145  	}
 57146  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*32 + 16)))(tls, fd, n)
 57147  }
 57148  
 57149  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 57150  	bp := tls.Alloc(8)
 57151  	defer tls.Free(8)
 57152  
 57153  	var ap va_list
 57154  	_ = ap
 57155  	var pArg uintptr
 57156  	if tsIsFailErrno(tls, ts+37073) != 0 {
 57157  		return -1
 57158  	}
 57159  	ap = va
 57160  	pArg = libc.VaUintptr(&ap)
 57161  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*32 + 16)))(tls, fd, cmd, libc.VaList(bp, pArg))
 57162  }
 57163  
 57164  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 57165  	if tsIsFailErrno(tls, ts+25126) != 0 {
 57166  		return -1
 57167  	}
 57168  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*32 + 16)))(tls, fd, aBuf, nBuf))
 57169  }
 57170  
 57171  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 57172  	if tsIsFailErrno(tls, ts+37079) != 0 {
 57173  		return -1
 57174  	}
 57175  	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))
 57176  }
 57177  
 57178  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 57179  	if tsIsFailErrno(tls, ts+37085) != 0 {
 57180  		return -1
 57181  	}
 57182  	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))
 57183  }
 57184  
 57185  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 57186  	if tsIsFailErrno(tls, ts+25131) != 0 {
 57187  		if tsErrno(tls, ts+25131) == EINTR {
 57188  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf/uint64(2))
 57189  		}
 57190  		return -1
 57191  	}
 57192  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf))
 57193  }
 57194  
 57195  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 57196  	if tsIsFailErrno(tls, ts+37093) != 0 {
 57197  		return -1
 57198  	}
 57199  	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))
 57200  }
 57201  
 57202  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 57203  	if tsIsFailErrno(tls, ts+37100) != 0 {
 57204  		return -1
 57205  	}
 57206  	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))
 57207  }
 57208  
 57209  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 57210  	if tsIsFail(tls) != 0 {
 57211  		return -1
 57212  	}
 57213  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*32 + 16)))(tls, fd, mode)
 57214  }
 57215  
 57216  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 57217  	if tsIsFail(tls) != 0 {
 57218  		return tsErrno(tls, ts+37116)
 57219  	}
 57220  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*32 + 16)))(tls, fd, off, len)
 57221  }
 57222  
 57223  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 57224  	if tsIsFailErrno(tls, ts+29040) != 0 {
 57225  		return libc.UintptrFromInt32(-1)
 57226  	}
 57227  	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)
 57228  }
 57229  
 57230  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 57231  	bp := tls.Alloc(8)
 57232  	defer tls.Free(8)
 57233  
 57234  	var ap va_list
 57235  	_ = ap
 57236  	var pArg uintptr
 57237  	if tsIsFailErrno(tls, ts+37126) != 0 {
 57238  		return libc.UintptrFromInt32(-1)
 57239  	}
 57240  	ap = va
 57241  	pArg = libc.VaUintptr(&ap)
 57242  	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))
 57243  }
 57244  
 57245  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57246  	bp := tls.Alloc(20)
 57247  	defer tls.Free(20)
 57248  
 57249  	var pVfs uintptr
 57250  
 57251  	var i int32
 57252  
 57253  	if objc != 3 {
 57254  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37133)
 57255  		return TCL_ERROR
 57256  	}
 57257  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp, bp+8) != 0 {
 57258  		return TCL_ERROR
 57259  	}
 57260  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57261  
 57262  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 57263  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57264  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp+16)
 57265  		if rc != 0 {
 57266  			return rc
 57267  		}
 57268  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig == uintptr(0) {
 57269  			aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig = (*struct {
 57270  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57271  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName)
 57272  			(*struct {
 57273  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57274  			})(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)
 57275  		}
 57276  		aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fdefault_errno
 57277  	}
 57278  
 57279  	return TCL_OK
 57280  }
 57281  
 57282  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57283  	var pVfs uintptr
 57284  	var i int32
 57285  
 57286  	if objc != 2 {
 57287  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57288  		return TCL_ERROR
 57289  	}
 57290  
 57291  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57292  	for i = 0; aSyscall[i].FzName != 0; i++ {
 57293  		if aSyscall[i].FxOrig != 0 {
 57294  			(*struct {
 57295  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57296  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 57297  			aSyscall[i].FxOrig = uintptr(0)
 57298  		}
 57299  	}
 57300  	return TCL_OK
 57301  }
 57302  
 57303  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57304  	bp := tls.Alloc(4)
 57305  	defer tls.Free(4)
 57306  
 57307  	var pVfs uintptr
 57308  	var i int32
 57309  	var rc int32
 57310  
 57311  	if objc != 2 && objc != 3 {
 57312  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57313  		return TCL_ERROR
 57314  	}
 57315  
 57316  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57317  	if objc == 2 {
 57318  		rc = (*struct {
 57319  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57320  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 57321  		for i = 0; aSyscall[i].FzName != 0; i++ {
 57322  			aSyscall[i].FxOrig = uintptr(0)
 57323  		}
 57324  	} else {
 57325  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp)
 57326  		rc = (*struct {
 57327  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57328  		})(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))
 57329  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 57330  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 57331  				continue
 57332  			}
 57333  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 57334  				continue
 57335  			}
 57336  			aSyscall[i].FxOrig = uintptr(0)
 57337  		}
 57338  	}
 57339  	if rc != SQLITE_OK {
 57340  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 57341  		return TCL_ERROR
 57342  	}
 57343  
 57344  	tcl.XTcl_ResetResult(tls, interp)
 57345  	return TCL_OK
 57346  }
 57347  
 57348  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57349  	var pVfs uintptr
 57350  	var x sqlite3_syscall_ptr
 57351  
 57352  	if objc != 3 {
 57353  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57354  		return TCL_ERROR
 57355  	}
 57356  
 57357  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57358  	x = (*struct {
 57359  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57360  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 57361  
 57362  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(x != uintptr(0)) != 0)))
 57363  	return TCL_OK
 57364  }
 57365  
 57366  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57367  	bp := tls.Alloc(8)
 57368  	defer tls.Free(8)
 57369  
 57370  	*(*int32)(unsafe.Pointer(bp)) = 0
 57371  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 57372  
 57373  	if objc != 2 && objc != 4 {
 57374  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37158)
 57375  		return TCL_ERROR
 57376  	}
 57377  
 57378  	if objc == 4 {
 57379  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 ||
 57380  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 57381  			return TCL_ERROR
 57382  		}
 57383  	}
 57384  
 57385  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 57386  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 57387  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 57388  	gSyscall.FnFail = 0
 57389  	return TCL_OK
 57390  }
 57391  
 57392  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57393  	bp := tls.Alloc(204)
 57394  	defer tls.Free(204)
 57395  
 57396  	var rc int32
 57397  
 57398  	*(*[12]Errno)(unsafe.Pointer(bp + 8)) = [12]Errno{
 57399  		{Fz: ts + 37174, Fi: EACCES},
 57400  		{Fz: ts + 37181, Fi: EINTR},
 57401  		{Fz: ts + 37187, Fi: EIO},
 57402  		{Fz: ts + 37191, Fi: EOVERFLOW},
 57403  		{Fz: ts + 37201, Fi: ENOMEM},
 57404  		{Fz: ts + 37208, Fi: EAGAIN},
 57405  		{Fz: ts + 37215, Fi: ETIMEDOUT},
 57406  		{Fz: ts + 37225, Fi: EBUSY},
 57407  		{Fz: ts + 37231, Fi: EPERM},
 57408  		{Fz: ts + 37237, Fi: EDEADLK},
 57409  		{Fz: ts + 37245, Fi: ENOLCK},
 57410  		{},
 57411  	}
 57412  
 57413  	if objc != 4 {
 57414  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37252)
 57415  		return TCL_ERROR
 57416  	}
 57417  
 57418  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57419  		*(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp)
 57420  	if rc != TCL_OK {
 57421  		return rc
 57422  	}
 57423  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57424  		*(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(Errno{})), ts+37266, 0, bp+200)
 57425  	if rc != TCL_OK {
 57426  		return rc
 57427  	}
 57428  
 57429  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 200)))*16)).Fi
 57430  	return TCL_OK
 57431  }
 57432  
 57433  type Errno = struct {
 57434  	Fz           uintptr
 57435  	Fi           int32
 57436  	F__ccgo_pad1 [4]byte
 57437  }
 57438  
 57439  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57440  	var zSys uintptr
 57441  	var pVfs uintptr
 57442  	var pList uintptr
 57443  
 57444  	if objc != 2 {
 57445  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57446  		return TCL_ERROR
 57447  	}
 57448  
 57449  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57450  	pList = tcl.XTcl_NewObj(tls)
 57451  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57452  	for zSys = (*struct {
 57453  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57454  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 57455  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57456  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 57457  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 57458  	}
 57459  
 57460  	tcl.XTcl_SetObjResult(tls, interp, pList)
 57461  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57462  		var _objPtr uintptr = pList
 57463  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57464  			tcl.XTclFreeObj(tls, _objPtr)
 57465  		}
 57466  	}
 57467  	return TCL_OK
 57468  }
 57469  
 57470  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57471  	var pVfs uintptr
 57472  
 57473  	if objc != 2 {
 57474  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57475  		return TCL_ERROR
 57476  	}
 57477  
 57478  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57479  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 57480  	return TCL_OK
 57481  }
 57482  
 57483  func ts_getpagesize(tls *libc.TLS) int32 {
 57484  	return gSyscall.Fpgsz
 57485  }
 57486  
 57487  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57488  	bp := tls.Alloc(20)
 57489  	defer tls.Free(20)
 57490  
 57491  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57492  
 57493  	if objc != 3 {
 57494  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37272)
 57495  		return TCL_ERROR
 57496  	}
 57497  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 57498  		return TCL_ERROR
 57499  	}
 57500  
 57501  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 57502  		if gSyscall.Forig_getpagesize != 0 {
 57503  			(*struct {
 57504  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57505  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37277, gSyscall.Forig_getpagesize)
 57506  		}
 57507  	} else {
 57508  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 57509  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37289, 0))
 57510  			return TCL_ERROR
 57511  		}
 57512  		gSyscall.Forig_getpagesize = (*struct {
 57513  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57514  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37277)
 57515  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 57516  		(*struct {
 57517  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57518  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 57519  			pVfs, ts+37277, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 57520  	}
 57521  
 57522  	return TCL_OK
 57523  }
 57524  
 57525  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57526  	bp := tls.Alloc(180)
 57527  	defer tls.Free(180)
 57528  
 57529  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 57530  		{FzName: ts + 37307, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57531  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57532  		}{test_syscall_fault}))},
 57533  		{FzName: ts + 37313, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57534  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57535  		}{test_syscall_install}))},
 57536  		{FzName: ts + 37321, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57537  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57538  		}{test_syscall_uninstall}))},
 57539  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57540  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57541  		}{test_syscall_reset}))},
 57542  		{FzName: ts + 37266, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57543  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57544  		}{test_syscall_errno}))},
 57545  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57546  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57547  		}{test_syscall_exists}))},
 57548  		{FzName: ts + 37331, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57549  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57550  		}{test_syscall_list}))},
 57551  		{FzName: ts + 37336, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57552  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57553  		}{test_syscall_defaultvfs}))},
 57554  		{FzName: ts + 37347, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57555  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57556  		}{test_syscall_pagesize}))},
 57557  		{},
 57558  	}
 57559  
 57560  	var rc int32
 57561  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57562  
 57563  	if objc < 2 {
 57564  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 57565  		return TCL_ERROR
 57566  	}
 57567  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 57568  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37356, 0))
 57569  		rc = TCL_ERROR
 57570  	} else {
 57571  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57572  			*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+176)
 57573  	}
 57574  	if rc != TCL_OK {
 57575  		return rc
 57576  	}
 57577  	return (*struct {
 57578  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57579  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*16)).FxCmd})).f(tls, clientData, interp, objc, objv)
 57580  }
 57581  
 57582  type SyscallCmd = struct {
 57583  	FzName uintptr
 57584  	FxCmd  uintptr
 57585  }
 57586  
 57587  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 57588  	bp := tls.Alloc(16)
 57589  	defer tls.Free(16)
 57590  
 57591  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 57592  		{FzName: ts + 37392, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57593  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57594  		}{test_syscall}))},
 57595  	}
 57596  	var i int32
 57597  
 57598  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]SyscallCmd{}))/uint64(unsafe.Sizeof(SyscallCmd{})); i++ {
 57599  		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))
 57600  	}
 57601  	return TCL_OK
 57602  }
 57603  
 57604  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 57605  	bp := tls.Alloc(80)
 57606  	defer tls.Free(80)
 57607  
 57608  	{
 57609  		libc.Xgetrlimit(tls, RLIMIT_CORE, bp)
 57610  		(*rlimit)(unsafe.Pointer(bp)).Frlim_cur = (*rlimit)(unsafe.Pointer(bp)).Frlim_max
 57611  		libc.Xsetrlimit(tls, RLIMIT_CORE, bp)
 57612  
 57613  	}
 57614  
 57615  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp+16) == 0 {
 57616  		Sqlite3_Init(tls, interp)
 57617  	}
 57618  	Md5_Init(tls, interp)
 57619  	Sqliteconfig_Init(tls, interp)
 57620  	Sqlitetest1_Init(tls, interp)
 57621  	Sqlitetest2_Init(tls, interp)
 57622  	Sqlitetest3_Init(tls, interp)
 57623  	Sqlitetest4_Init(tls, interp)
 57624  	Sqlitetest5_Init(tls, interp)
 57625  	Sqlitetest6_Init(tls, interp)
 57626  	Sqlitetest7_Init(tls, interp)
 57627  	Sqlitetest8_Init(tls, interp)
 57628  	Sqlitetest9_Init(tls, interp)
 57629  	Sqlitetestasync_Init(tls, interp)
 57630  	Sqlitetest_autoext_Init(tls, interp)
 57631  	Sqlitetest_blob_Init(tls, interp)
 57632  	Sqlitetest_demovfs_Init(tls, interp)
 57633  	Sqlitetest_func_Init(tls, interp)
 57634  	Sqlitetest_hexio_Init(tls, interp)
 57635  	Sqlitetest_init_Init(tls, interp)
 57636  	Sqlitetest_malloc_Init(tls, interp)
 57637  	Sqlitetest_mutex_Init(tls, interp)
 57638  	Sqlitetestschema_Init(tls, interp)
 57639  	Sqlitetesttclvar_Init(tls, interp)
 57640  	Sqlitetestfs_Init(tls, interp)
 57641  	SqlitetestThread_Init(tls, interp)
 57642  	SqlitetestOnefile_Init(tls)
 57643  	SqlitetestOsinst_Init(tls, interp)
 57644  	Sqlitetestbackup_Init(tls, interp)
 57645  	Sqlitetestintarray_Init(tls, interp)
 57646  	Sqlitetestvfs_Init(tls, interp)
 57647  	Sqlitetestrtree_Init(tls, interp)
 57648  	Sqlitetestrtreedoc_Init(tls, interp)
 57649  	Sqlitequota_Init(tls, interp)
 57650  	Sqlitemultiplex_Init(tls, interp)
 57651  	SqliteSuperlock_Init(tls, interp)
 57652  	SqlitetestSyscall_Init(tls, interp)
 57653  	TestSession_Init(tls, interp)
 57654  	Fts5tcl_Init(tls, interp)
 57655  	SqliteRbu_Init(tls, interp)
 57656  	Sqlitetesttcl_Init(tls, interp)
 57657  
 57658  	TestExpert_Init(tls, interp)
 57659  	Sqlitetest_window_Init(tls, interp)
 57660  	Sqlitetestvdbecov_Init(tls, interp)
 57661  
 57662  	tcl.XTcl_CreateObjCommand(tls,
 57663  		interp, ts+37405, *(*uintptr)(unsafe.Pointer(&struct {
 57664  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57665  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 57666  	return uintptr(0)
 57667  }
 57668  
 57669  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57670  	var slave uintptr
 57671  	if objc != 2 {
 57672  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37433)
 57673  		return TCL_ERROR
 57674  	}
 57675  
 57676  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 57677  	if !(slave != 0) {
 57678  		return TCL_ERROR
 57679  	}
 57680  
 57681  	sqlite3TestInit(tls, slave)
 57682  	return TCL_OK
 57683  }
 57684  
 57685  type tclvar_vtab1 = struct {
 57686  	Fbase   sqlite3_vtab
 57687  	Finterp uintptr
 57688  }
 57689  
 57690  type tclvar_vtab = tclvar_vtab1
 57691  type tclvar_cursor1 = struct {
 57692  	Fbase   sqlite3_vtab_cursor
 57693  	FpList1 uintptr
 57694  	FpList2 uintptr
 57695  	Fi1     int32
 57696  	Fi2     int32
 57697  }
 57698  
 57699  type tclvar_cursor = tclvar_cursor1
 57700  
 57701  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 57702  	var pVtab uintptr
 57703  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 57704  	if pVtab == uintptr(0) {
 57705  		return SQLITE_NOMEM
 57706  	}
 57707  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 57708  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 57709  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 57710  	return SQLITE_OK
 57711  }
 57712  
 57713  var zSchema = *(*[100]uint8)(unsafe.Pointer(ts + 37439))
 57714  
 57715  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 57716  	sqlite3.Xsqlite3_free(tls, pVtab)
 57717  	return SQLITE_OK
 57718  }
 57719  
 57720  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 57721  	var pCur uintptr
 57722  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 57723  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 57724  	return SQLITE_OK
 57725  }
 57726  
 57727  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 57728  	var pCur uintptr = cur
 57729  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 57730  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57731  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 57732  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57733  				tcl.XTclFreeObj(tls, _objPtr)
 57734  			}
 57735  		}
 57736  	}
 57737  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57738  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57739  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57740  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57741  				tcl.XTclFreeObj(tls, _objPtr)
 57742  			}
 57743  		}
 57744  	}
 57745  	sqlite3.Xsqlite3_free(tls, pCur)
 57746  	return SQLITE_OK
 57747  }
 57748  
 57749  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 57750  	bp := tls.Alloc(4)
 57751  	defer tls.Free(4)
 57752  
 57753  	var p uintptr
 57754  
 57755  	if pObj != 0 {
 57756  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 57757  			p = tcl.XTcl_NewStringObj(tls, ts+37539, -1)
 57758  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 57759  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 57760  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 57761  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57762  				var _objPtr uintptr = p
 57763  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57764  					tcl.XTclFreeObj(tls, _objPtr)
 57765  				}
 57766  			}
 57767  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 57768  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 57769  
 57770  		} else {
 57771  			*(*int32)(unsafe.Pointer(bp)) = 0
 57772  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 57773  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 57774  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 57775  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57776  					var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57777  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57778  						tcl.XTclFreeObj(tls, _objPtr)
 57779  					}
 57780  				}
 57781  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 57782  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 57783  				return 0
 57784  			}
 57785  		}
 57786  	}
 57787  
 57788  	return 1
 57789  }
 57790  
 57791  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 57792  	bp := tls.Alloc(16)
 57793  	defer tls.Free(16)
 57794  
 57795  	*(*int32)(unsafe.Pointer(bp)) = 0
 57796  	var ok int32 = 0
 57797  
 57798  	var pCur uintptr = cur
 57799  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 57800  
 57801  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 57802  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 57803  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+8)
 57804  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 8)))
 57805  		if !(ok != 0) {
 57806  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 57807  		}
 57808  	}
 57809  
 57810  	return 0
 57811  }
 57812  
 57813  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 57814  	var pCur uintptr = pVtabCursor
 57815  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 57816  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37551, -1)
 57817  
 57818  	var zEq uintptr = ts + 584
 57819  	var zMatch uintptr = ts + 584
 57820  	var zGlob uintptr = ts + 584
 57821  	var zRegexp uintptr = ts + 584
 57822  	var zLike uintptr = ts + 584
 57823  	var i int32
 57824  
 57825  	for i = 0; *(*uint8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 57826  		switch int32(*(*uint8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 57827  		case 'e':
 57828  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57829  			break
 57830  		case 'm':
 57831  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57832  			break
 57833  		case 'g':
 57834  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57835  			break
 57836  		case 'r':
 57837  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57838  			break
 57839  		case 'l':
 57840  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57841  			break
 57842  		default:
 57843  		}
 57844  	}
 57845  
 57846  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 57847  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 57848  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 57849  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 57850  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 57851  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 57852  
 57853  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 57854  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 57855  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57856  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 57857  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57858  				tcl.XTclFreeObj(tls, _objPtr)
 57859  			}
 57860  		}
 57861  	}
 57862  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57863  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57864  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57865  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57866  				tcl.XTclFreeObj(tls, _objPtr)
 57867  			}
 57868  		}
 57869  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 57870  	}
 57871  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 57872  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 57873  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 57874  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 57875  
 57876  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 57877  		var _objPtr uintptr = p
 57878  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57879  			tcl.XTclFreeObj(tls, _objPtr)
 57880  		}
 57881  	}
 57882  	return tclvarNext(tls, pVtabCursor)
 57883  }
 57884  
 57885  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 57886  	bp := tls.Alloc(32)
 57887  	defer tls.Free(32)
 57888  
 57889  	var z1 uintptr
 57890  	var z2 uintptr = ts + 584
 57891  	var pCur uintptr = cur
 57892  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 57893  
 57894  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 57895  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+24)
 57896  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 57897  	if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 57898  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 57899  	}
 57900  	switch i {
 57901  	case 0:
 57902  		{
 57903  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57904  			break
 57905  
 57906  		}
 57907  	case 1:
 57908  		{
 57909  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 57910  			break
 57911  
 57912  		}
 57913  	case 2:
 57914  		{
 57915  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 57916  				if *(*uint8)(unsafe.Pointer(z2)) != 0 {
 57917  					return z2
 57918  				}
 57919  				return uintptr(0)
 57920  			}(), TCL_GLOBAL_ONLY)
 57921  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 57922  			break
 57923  
 57924  		}
 57925  	case 3:
 57926  		{
 57927  			var z3 uintptr
 57928  			if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 57929  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37569, libc.VaList(bp, z1, z2))
 57930  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 57931  			} else {
 57932  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57933  			}
 57934  			break
 57935  
 57936  		}
 57937  	}
 57938  	return SQLITE_OK
 57939  }
 57940  
 57941  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 57942  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 57943  	return SQLITE_OK
 57944  }
 57945  
 57946  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 57947  	var pCur uintptr = cur
 57948  	return func() int32 {
 57949  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57950  			return 0
 57951  		}
 57952  		return 1
 57953  	}()
 57954  }
 57955  
 57956  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x uint8) int32 {
 57957  	var i int32
 57958  	for i = 0; *(*uint8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 57959  		if int32(*(*uint8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 57960  			return 1
 57961  		}
 57962  	}
 57963  	*(*uint8)(unsafe.Pointer(zStr + uintptr(i))) = x
 57964  	*(*uint8)(unsafe.Pointer(zStr + uintptr(i+1))) = uint8(0)
 57965  	return 0
 57966  }
 57967  
 57968  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 57969  	bp := tls.Alloc(4)
 57970  	defer tls.Free(4)
 57971  
 57972  	var rc int32
 57973  	*(*int32)(unsafe.Pointer(bp)) = 0
 57974  	var pRes uintptr
 57975  	rc = tcl.XTcl_Eval(tls, interp,
 57976  		ts+37576)
 57977  	if rc == TCL_OK {
 57978  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 57979  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 57980  	}
 57981  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 57982  }
 57983  
 57984  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 57985  	var pTab uintptr = tab
 57986  	var ii int32
 57987  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 57988  	var iStr int32 = 0
 57989  
 57990  	if zStr == uintptr(0) {
 57991  		return SQLITE_NOMEM
 57992  	}
 57993  	*(*uint8)(unsafe.Pointer(zStr)) = uint8(0)
 57994  
 57995  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 57996  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 57997  		var pUsage uintptr
 57998  
 57999  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 58000  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 58001  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 58002  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('e')) {
 58003  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58004  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 58005  				}
 58006  			}
 58007  
 58008  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 58009  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('m')) {
 58010  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58011  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 58012  				}
 58013  			}
 58014  
 58015  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 58016  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('g')) {
 58017  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58018  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 58019  				}
 58020  			}
 58021  
 58022  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 58023  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('r')) {
 58024  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58025  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 58026  				}
 58027  			}
 58028  
 58029  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 58030  				if 0 == tclvarAddToIdxstr(tls, zStr, uint8('l')) {
 58031  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 58032  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 58033  				}
 58034  			}
 58035  		}
 58036  	}
 58037  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 58038  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 58039  
 58040  	return SQLITE_OK
 58041  }
 58042  
 58043  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 58044  	var pTab uintptr = tab
 58045  	if argc == 1 {
 58046  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 58047  		tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, uintptr(0), TCL_GLOBAL_ONLY)
 58048  		return SQLITE_OK
 58049  	}
 58050  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 58051  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 58052  		var zName uintptr
 58053  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8))) != SQLITE_TEXT {
 58054  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37637, 0)
 58055  			return SQLITE_ERROR
 58056  		}
 58057  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 58058  		if zValue != 0 {
 58059  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 58060  		} else {
 58061  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), TCL_GLOBAL_ONLY)
 58062  		}
 58063  		return SQLITE_OK
 58064  	}
 58065  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 58066  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_TEXT {
 58067  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 58068  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 58069  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 58070  
 58071  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 58072  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, uintptr(0), TCL_GLOBAL_ONLY)
 58073  		}
 58074  		if zValue != uintptr(0) {
 58075  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 58076  		}
 58077  		return SQLITE_OK
 58078  	}
 58079  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37672, 0)
 58080  	return SQLITE_ERROR
 58081  }
 58082  
 58083  var tclvarModule = sqlite3_module{
 58084  	FxCreate:     0,
 58085  	FxConnect:    0,
 58086  	FxBestIndex:  0,
 58087  	FxDisconnect: 0,
 58088  	FxDestroy:    0,
 58089  	FxOpen:       0,
 58090  	FxClose:      0,
 58091  	FxFilter:     0,
 58092  	FxNext:       0,
 58093  	FxEof:        0,
 58094  	FxColumn:     0,
 58095  	FxRowid:      0,
 58096  	FxUpdate:     0,
 58097  }
 58098  
 58099  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58100  	bp := tls.Alloc(8)
 58101  	defer tls.Free(8)
 58102  
 58103  	var rc int32 = TCL_OK
 58104  
 58105  	if objc != 2 {
 58106  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 58107  		return TCL_ERROR
 58108  	}
 58109  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 58110  		return TCL_ERROR
 58111  	}
 58112  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29859, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 58113  	rc = tcl.XTcl_Eval(tls, interp,
 58114  		ts+37703)
 58115  	return rc
 58116  }
 58117  
 58118  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 58119  	var i int32
 58120  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd13))/uint64(unsafe.Sizeof(struct {
 58121  		FzName      uintptr
 58122  		FxProc      uintptr
 58123  		FclientData uintptr
 58124  	}{})); i++ {
 58125  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 58126  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 58127  	}
 58128  	return TCL_OK
 58129  }
 58130  
 58131  var aObjCmd13 = [1]struct {
 58132  	FzName      uintptr
 58133  	FxProc      uintptr
 58134  	FclientData uintptr
 58135  }{
 58136  	{FzName: ts + 38239, FxProc: 0},
 58137  }
 58138  
 58139  type SqlThread1 = struct {
 58140  	Fparent   Tcl_ThreadId
 58141  	Finterp   uintptr
 58142  	FzScript  uintptr
 58143  	FzVarname uintptr
 58144  }
 58145  
 58146  type SqlThread = SqlThread1
 58147  
 58148  type EvalEvent1 = struct {
 58149  	Fbase    Tcl_Event
 58150  	FzScript uintptr
 58151  	Finterp  uintptr
 58152  }
 58153  
 58154  type EvalEvent = EvalEvent1
 58155  
 58156  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 58157  	var rc int32
 58158  	var p uintptr = evPtr
 58159  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 58160  	if rc != TCL_OK {
 58161  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 58162  	}
 58163  	_ = flags
 58164  	return 1
 58165  }
 58166  
 58167  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 58168  	bp := tls.Alloc(4)
 58169  	defer tls.Free(4)
 58170  
 58171  	var pEvent uintptr
 58172  	var zMsg uintptr
 58173  
 58174  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 58175  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp)))+uint64(1)))
 58176  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 58177  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 58178  		f func(*libc.TLS, uintptr, int32) int32
 58179  	}{tclScriptEvent}))
 58180  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 58181  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp))+1))
 58182  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 58183  
 58184  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 58185  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 58186  }
 58187  
 58188  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 58189  	var interp uintptr
 58190  	var pRes uintptr
 58191  	var pList uintptr
 58192  	var rc int32
 58193  	var p uintptr = pSqlThread
 58194  
 58195  	interp = tcl.XTcl_CreateInterp(tls)
 58196  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 58197  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58198  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 58199  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 58200  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58201  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 58202  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 58203  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58204  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 58205  	tcl.XTcl_CreateObjCommand(tls, interp,
 58206  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 58207  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58208  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 58209  	tcl.XTcl_CreateObjCommand(tls, interp,
 58210  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 58211  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58212  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 58213  	Sqlitetest1_Init(tls, interp)
 58214  	Sqlitetest_mutex_Init(tls, interp)
 58215  	Sqlite3_Init(tls, interp)
 58216  
 58217  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 58218  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 58219  	pList = tcl.XTcl_NewObj(tls)
 58220  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 58221  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 58222  
 58223  	if rc != TCL_OK {
 58224  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 58225  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 58226  		postToParent(tls, p, pList)
 58227  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58228  			var _objPtr uintptr = pList
 58229  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58230  				tcl.XTclFreeObj(tls, _objPtr)
 58231  			}
 58232  		}
 58233  		pList = tcl.XTcl_NewObj(tls)
 58234  	}
 58235  
 58236  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38367, -1))
 58237  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 58238  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 58239  	postToParent(tls, p, pList)
 58240  
 58241  	tcl.XTcl_Free(tls, p)
 58242  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 58243  		var _objPtr uintptr = pList
 58244  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58245  			tcl.XTclFreeObj(tls, _objPtr)
 58246  		}
 58247  	}
 58248  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 58249  		var _objPtr uintptr = pRes
 58250  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58251  			tcl.XTclFreeObj(tls, _objPtr)
 58252  		}
 58253  	}
 58254  	tcl.XTcl_DeleteInterp(tls, interp)
 58255  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 58256  	}
 58257  	tcl.XTcl_ExitThread(tls, 0)
 58258  
 58259  }
 58260  
 58261  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58262  	bp := tls.Alloc(32)
 58263  	defer tls.Free(32)
 58264  
 58265  	var pNew uintptr
 58266  	var rc int32
 58267  
 58268  	var zVarname uintptr
 58269  
 58270  	var zScript uintptr
 58271  
 58272  	var nStack int32 = 0
 58273  	var flags int32 = 0000
 58274  
 58275  	_ = clientData
 58276  	_ = objc
 58277  
 58278  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 58279  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+20)
 58280  
 58281  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlThread{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(*(*int32)(unsafe.Pointer(bp + 20)))+uint64(2)))
 58282  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*32
 58283  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 58284  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 58285  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 20))+1))
 58286  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 58287  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 58288  
 58289  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 58290  	if rc != TCL_OK {
 58291  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38371, 0))
 58292  		tcl.XTcl_Free(tls, pNew)
 58293  		return TCL_ERROR
 58294  	}
 58295  
 58296  	return TCL_OK
 58297  }
 58298  
 58299  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58300  	bp := tls.Alloc(20)
 58301  	defer tls.Free(20)
 58302  
 58303  	var pEvent uintptr
 58304  	var zMsg uintptr
 58305  
 58306  	var p uintptr = clientData
 58307  
 58308  	_ = objc
 58309  
 58310  	if p == uintptr(0) {
 58311  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38399, 0))
 58312  		return TCL_ERROR
 58313  	}
 58314  
 58315  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 58316  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(1)))
 58317  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 58318  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 58319  		f func(*libc.TLS, uintptr, int32) int32
 58320  	}{tclScriptEvent}))
 58321  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 58322  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 58323  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 58324  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 58325  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 58326  
 58327  	return TCL_OK
 58328  }
 58329  
 58330  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 58331  	_ = pArg
 58332  	_ = nBusy
 58333  	sqlite3.Xsqlite3_sleep(tls, 50)
 58334  	return 1
 58335  }
 58336  
 58337  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58338  	bp := tls.Alloc(124)
 58339  	defer tls.Free(124)
 58340  
 58341  	var zFilename uintptr
 58342  
 58343  	_ = clientData
 58344  	_ = objc
 58345  
 58346  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58347  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 58348  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 58349  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 58350  		f func(*libc.TLS, uintptr, int32) int32
 58351  	}{xBusy})), uintptr(0))
 58352  
 58353  	if sqlite3TestMakePointerStr(tls, interp, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 58354  		return TCL_ERROR
 58355  	}
 58356  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+24, 0))
 58357  
 58358  	return TCL_OK
 58359  }
 58360  
 58361  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58362  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 58363  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 58364  	_ = clientData
 58365  	_ = objc
 58366  	_ = objv
 58367  	return TCL_OK
 58368  }
 58369  
 58370  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58371  	bp := tls.Alloc(164)
 58372  	defer tls.Free(164)
 58373  
 58374  	*(*[5]struct {
 58375  		FzName       uintptr
 58376  		FxProc       uintptr
 58377  		FnArg        int32
 58378  		F__ccgo_pad1 [4]byte
 58379  		FzUsage      uintptr
 58380  	})(unsafe.Pointer(bp)) = [5]struct {
 58381  		FzName       uintptr
 58382  		FxProc       uintptr
 58383  		FnArg        int32
 58384  		F__ccgo_pad1 [4]byte
 58385  		FzUsage      uintptr
 58386  	}{
 58387  		{FzName: ts + 38416, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58388  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58389  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 58390  		{FzName: ts + 38423, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58391  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58392  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38429},
 58393  		{FzName: ts + 37033, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58394  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58395  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38444},
 58396  		{FzName: ts + 38451, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58397  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58398  		}{sqlthread_id})), FzUsage: ts + 584},
 58399  		{},
 58400  	}
 58401  	var pSub uintptr
 58402  	var rc int32
 58403  
 58404  	if objc < 2 {
 58405  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 58406  		return TCL_ERROR
 58407  	}
 58408  
 58409  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 58410  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(struct {
 58411  			FzName       uintptr
 58412  			FxProc       uintptr
 58413  			FnArg        int32
 58414  			F__ccgo_pad1 [4]byte
 58415  			FzUsage      uintptr
 58416  		}{})), ts+2014, 0, bp+160)
 58417  	if rc != TCL_OK {
 58418  		return rc
 58419  	}
 58420  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 160)))*32
 58421  
 58422  	if objc < (*struct {
 58423  		FzName       uintptr
 58424  		FxProc       uintptr
 58425  		FnArg        int32
 58426  		F__ccgo_pad1 [4]byte
 58427  		FzUsage      uintptr
 58428  	})(unsafe.Pointer(pSub)).FnArg+2 {
 58429  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 58430  			FzName       uintptr
 58431  			FxProc       uintptr
 58432  			FnArg        int32
 58433  			F__ccgo_pad1 [4]byte
 58434  			FzUsage      uintptr
 58435  		})(unsafe.Pointer(pSub)).FzUsage)
 58436  		return TCL_ERROR
 58437  	}
 58438  
 58439  	return (*struct {
 58440  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58441  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 58442  		FzName       uintptr
 58443  		FxProc       uintptr
 58444  		FnArg        int32
 58445  		F__ccgo_pad1 [4]byte
 58446  		FzUsage      uintptr
 58447  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 58448  }
 58449  
 58450  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58451  	bp := tls.Alloc(16)
 58452  	defer tls.Free(16)
 58453  
 58454  	tcl.XTcl_GetTime(tls, bp)
 58455  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32((*Tcl_Time)(unsafe.Pointer(bp)).Fsec)))
 58456  	_ = clientData
 58457  	_ = objc
 58458  	_ = objv
 58459  	return TCL_OK
 58460  }
 58461  
 58462  type UnlockNotification1 = struct {
 58463  	Ffired       int32
 58464  	F__ccgo_pad1 [4]byte
 58465  	Fcond        pthread_cond_t
 58466  	Fmutex       pthread_mutex_t
 58467  }
 58468  
 58469  type UnlockNotification = UnlockNotification1
 58470  
 58471  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 58472  	var i int32
 58473  	for i = 0; i < nArg; i++ {
 58474  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 58475  		libc.Xpthread_mutex_lock(tls, p+56)
 58476  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 58477  		libc.Xpthread_cond_signal(tls, p+8)
 58478  		libc.Xpthread_mutex_unlock(tls, p+56)
 58479  	}
 58480  }
 58481  
 58482  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 58483  	bp := tls.Alloc(104)
 58484  	defer tls.Free(104)
 58485  
 58486  	var rc int32
 58487  
 58488  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 58489  	libc.Xpthread_mutex_init(tls, bp+56, uintptr(0))
 58490  	libc.Xpthread_cond_init(tls, bp+8, uintptr(0))
 58491  
 58492  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 58493  		f func(*libc.TLS, uintptr, int32)
 58494  	}{unlock_notify_cb})), bp)
 58495  
 58496  	if rc == SQLITE_OK {
 58497  		libc.Xpthread_mutex_lock(tls, bp+56)
 58498  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 58499  			libc.Xpthread_cond_wait(tls, bp+8, bp+56)
 58500  		}
 58501  		libc.Xpthread_mutex_unlock(tls, bp+56)
 58502  	}
 58503  
 58504  	libc.Xpthread_cond_destroy(tls, bp+8)
 58505  	libc.Xpthread_mutex_destroy(tls, bp+56)
 58506  
 58507  	return rc
 58508  }
 58509  
 58510  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 58511  	var rc int32
 58512  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 58513  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 58514  		if rc != SQLITE_OK {
 58515  			break
 58516  		}
 58517  		sqlite3.Xsqlite3_reset(tls, pStmt)
 58518  	}
 58519  	return rc
 58520  }
 58521  
 58522  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 58523  	var rc int32
 58524  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 58525  		rc = wait_for_unlock_notify(tls, db)
 58526  		if rc != SQLITE_OK {
 58527  			break
 58528  		}
 58529  	}
 58530  	return rc
 58531  }
 58532  
 58533  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58534  	var pStmt uintptr
 58535  	var rc int32
 58536  
 58537  	if objc != 2 {
 58538  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 58539  		return TCL_ERROR
 58540  	}
 58541  
 58542  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58543  	rc = sqlite3_blocking_step(tls, pStmt)
 58544  
 58545  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 58546  	return TCL_OK
 58547  }
 58548  
 58549  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58550  	bp := tls.Alloc(162)
 58551  	defer tls.Free(162)
 58552  
 58553  	var zSql uintptr
 58554  
 58555  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 58556  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 58557  
 58558  	var rc int32
 58559  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 58560  
 58561  	if objc != 5 && objc != 4 {
 58562  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 58563  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 58564  		return TCL_ERROR
 58565  	}
 58566  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 58567  		return TCL_ERROR
 58568  	}
 58569  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58570  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 58571  		return TCL_ERROR
 58572  	}
 58573  
 58574  	if isBlocking != 0 {
 58575  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 58576  	} else {
 58577  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 58578  	}
 58579  
 58580  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 58581  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 58582  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(int64(*(*int32)(unsafe.Pointer(bp + 88))) - (int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 58583  		}
 58584  		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)
 58585  	}
 58586  	if rc != SQLITE_OK {
 58587  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]uint8{})), bp+112, ts+38454, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 58588  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 58589  		return TCL_ERROR
 58590  	}
 58591  
 58592  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 58593  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 58594  			return TCL_ERROR
 58595  		}
 58596  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 58597  	}
 58598  	return TCL_OK
 58599  }
 58600  
 58601  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 58602  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 58603  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58604  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 58605  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 58606  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58607  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 58608  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 58609  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58610  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 58611  	tcl.XTcl_CreateObjCommand(tls, interp,
 58612  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 58613  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58614  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 58615  	tcl.XTcl_CreateObjCommand(tls, interp,
 58616  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 58617  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58618  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 58619  	return TCL_OK
 58620  }
 58621  
 58622  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 58623  	return TCL_OK
 58624  }
 58625  
 58626  type Testvfs1 = struct {
 58627  	FzName        uintptr
 58628  	FpParent      uintptr
 58629  	FpVfs         uintptr
 58630  	Finterp       uintptr
 58631  	FpScript      uintptr
 58632  	FpBuffer      uintptr
 58633  	FisNoshm      int32
 58634  	FisFullshm    int32
 58635  	Fmask         int32
 58636  	Fioerr_err    TestFaultInject
 58637  	Ffull_err     TestFaultInject
 58638  	Fcantopen_err TestFaultInject
 58639  	FiDevchar     int32
 58640  	FiSectorsize  int32
 58641  }
 58642  
 58643  type Testvfs = Testvfs1
 58644  type TestvfsBuffer1 = struct {
 58645  	FzFile       uintptr
 58646  	Fpgsz        int32
 58647  	F__ccgo_pad1 [4]byte
 58648  	FaPage       [1024]uintptr
 58649  	FpFile       uintptr
 58650  	FpNext       uintptr
 58651  }
 58652  
 58653  type TestvfsBuffer = TestvfsBuffer1
 58654  type TestvfsFile1 = struct {
 58655  	Fbase sqlite3_file
 58656  	FpFd  uintptr
 58657  }
 58658  
 58659  type TestvfsFile = TestvfsFile1
 58660  type TestvfsFd1 = struct {
 58661  	FpVfs       uintptr
 58662  	FzFilename  uintptr
 58663  	FpReal      uintptr
 58664  	FpShmId     uintptr
 58665  	FpShm       uintptr
 58666  	Fexcllock   u32
 58667  	Fsharedlock u32
 58668  	FpNext      uintptr
 58669  }
 58670  
 58671  type TestvfsFd = TestvfsFd1
 58672  
 58673  type TestFaultInject1 = struct {
 58674  	FiCnt   int32
 58675  	FeFault int32
 58676  	FnFail  int32
 58677  }
 58678  
 58679  type TestFaultInject = TestFaultInject1
 58680  
 58681  var tvfs_io_methods = sqlite3_io_methods{
 58682  	FiVersion:               3,
 58683  	FxClose:                 0,
 58684  	FxRead:                  0,
 58685  	FxWrite:                 0,
 58686  	FxTruncate:              0,
 58687  	FxSync:                  0,
 58688  	FxFileSize:              0,
 58689  	FxLock:                  0,
 58690  	FxUnlock:                0,
 58691  	FxCheckReservedLock:     0,
 58692  	FxFileControl:           0,
 58693  	FxSectorSize:            0,
 58694  	FxDeviceCharacteristics: 0,
 58695  	FxShmMap:                0,
 58696  	FxShmLock:               0,
 58697  	FxShmBarrier:            0,
 58698  	FxShmUnmap:              0,
 58699  	FxFetch:                 0,
 58700  	FxUnfetch:               0,
 58701  }
 58702  
 58703  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 58704  	bp := tls.Alloc(144)
 58705  	defer tls.Free(144)
 58706  
 58707  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 58708  		{FzCode: ts + 2127},
 58709  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 58710  		{FeCode: SQLITE_IOERR, FzCode: ts + 38458},
 58711  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38471},
 58712  		{FeCode: SQLITE_BUSY, FzCode: ts + 38485},
 58713  		{FeCode: SQLITE_READONLY, FzCode: ts + 38497},
 58714  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38513},
 58715  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38538},
 58716  		{FeCode: -1, FzCode: ts + 38554},
 58717  	}
 58718  	var z uintptr
 58719  	var i int32
 58720  
 58721  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58722  	for i = 0; i < int32(uint64(unsafe.Sizeof([9]errcode{}))/uint64(unsafe.Sizeof(errcode{}))); i++ {
 58723  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*16)).FzCode) {
 58724  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*16)).FeCode
 58725  			return 1
 58726  		}
 58727  	}
 58728  
 58729  	return 0
 58730  }
 58731  
 58732  type errcode = struct {
 58733  	FeCode       int32
 58734  	F__ccgo_pad1 [4]byte
 58735  	FzCode       uintptr
 58736  }
 58737  
 58738  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 58739  	var ret int32 = 0
 58740  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 58741  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 58742  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 58743  			ret = 1
 58744  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 58745  		}
 58746  	}
 58747  	return ret
 58748  }
 58749  
 58750  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 58751  	return tvfsInjectFault(tls, p+60)
 58752  }
 58753  
 58754  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 58755  	return tvfsInjectFault(tls, p+72)
 58756  }
 58757  
 58758  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 58759  	return tvfsInjectFault(tls, p+84)
 58760  }
 58761  
 58762  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 58763  	var rc int32
 58764  	var pEval uintptr
 58765  
 58766  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 58767  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 58768  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 58769  	if arg1 != 0 {
 58770  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 58771  	}
 58772  	if arg2 != 0 {
 58773  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 58774  	}
 58775  	if arg3 != 0 {
 58776  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 58777  	}
 58778  	if arg4 != 0 {
 58779  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 58780  	}
 58781  
 58782  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 58783  	if rc != TCL_OK {
 58784  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58785  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58786  	}
 58787  }
 58788  
 58789  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 58790  	var pTestfile uintptr = pFile
 58791  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 58792  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58793  
 58794  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 58795  		tvfsExecTcl(tls, p, ts+35556,
 58796  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58797  	}
 58798  
 58799  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 58800  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58801  			var _objPtr uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId
 58802  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58803  				tcl.XTclFreeObj(tls, _objPtr)
 58804  			}
 58805  		}
 58806  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58807  	}
 58808  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 58809  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 58810  	}
 58811  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58812  	tcl.XTcl_Free(tls, pFd)
 58813  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 58814  	return SQLITE_OK
 58815  }
 58816  
 58817  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 58818  	bp := tls.Alloc(4)
 58819  	defer tls.Free(4)
 58820  
 58821  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58822  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58823  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58824  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 58825  		tvfsExecTcl(tls, p, ts+35563,
 58826  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58827  		tvfsResultCode(tls, p, bp)
 58828  	}
 58829  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58830  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58831  	}
 58832  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58833  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 58834  	}
 58835  	return *(*int32)(unsafe.Pointer(bp))
 58836  }
 58837  
 58838  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 58839  	bp := tls.Alloc(4)
 58840  	defer tls.Free(4)
 58841  
 58842  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58843  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58844  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58845  
 58846  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 58847  		tvfsExecTcl(tls, p, ts+35569,
 58848  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58849  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 58850  		tvfsResultCode(tls, p, bp)
 58851  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 58852  			return SQLITE_OK
 58853  		}
 58854  	}
 58855  
 58856  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58857  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58858  	}
 58859  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58860  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58861  	}
 58862  
 58863  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58864  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 58865  	}
 58866  	return *(*int32)(unsafe.Pointer(bp))
 58867  }
 58868  
 58869  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 58870  	bp := tls.Alloc(4)
 58871  	defer tls.Free(4)
 58872  
 58873  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58874  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58875  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58876  
 58877  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 58878  		tvfsExecTcl(tls, p, ts+35576,
 58879  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58880  		tvfsResultCode(tls, p, bp)
 58881  	}
 58882  
 58883  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58884  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 58885  	}
 58886  	return *(*int32)(unsafe.Pointer(bp))
 58887  }
 58888  
 58889  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 58890  	bp := tls.Alloc(4)
 58891  	defer tls.Free(4)
 58892  
 58893  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58894  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58895  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58896  
 58897  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 58898  		var zFlags uintptr = uintptr(0)
 58899  
 58900  		switch flags {
 58901  		case SQLITE_SYNC_NORMAL:
 58902  			zFlags = ts + 16397
 58903  			break
 58904  			fallthrough
 58905  		case SQLITE_SYNC_FULL:
 58906  			zFlags = ts + 18291
 58907  			break
 58908  			fallthrough
 58909  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 58910  			zFlags = ts + 38566
 58911  			break
 58912  			fallthrough
 58913  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 58914  			zFlags = ts + 38582
 58915  			break
 58916  			fallthrough
 58917  		default:
 58918  		}
 58919  
 58920  		tvfsExecTcl(tls, p, ts+27843,
 58921  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58922  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 58923  		tvfsResultCode(tls, p, bp)
 58924  	}
 58925  
 58926  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58927  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58928  	}
 58929  
 58930  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58931  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 58932  	}
 58933  
 58934  	return *(*int32)(unsafe.Pointer(bp))
 58935  }
 58936  
 58937  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 58938  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58939  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 58940  }
 58941  
 58942  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58943  	bp := tls.Alloc(38)
 58944  	defer tls.Free(38)
 58945  
 58946  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58947  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58948  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 58949  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58950  		tvfsExecTcl(tls, p, ts+35596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58951  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58952  	}
 58953  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58954  }
 58955  
 58956  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58957  	bp := tls.Alloc(38)
 58958  	defer tls.Free(38)
 58959  
 58960  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58961  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58962  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 58963  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]uint8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58964  		tvfsExecTcl(tls, p, ts+35602, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58965  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58966  	}
 58967  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58968  		return SQLITE_IOERR | int32(8)<<8
 58969  	}
 58970  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58971  }
 58972  
 58973  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 58974  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58975  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58976  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 58977  		tvfsExecTcl(tls, p, ts+38596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58978  			uintptr(0), uintptr(0), uintptr(0))
 58979  	}
 58980  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 58981  }
 58982  
 58983  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 58984  	bp := tls.Alloc(68)
 58985  	defer tls.Free(68)
 58986  
 58987  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58988  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58989  	if op == SQLITE_FCNTL_PRAGMA {
 58990  		var argv uintptr = pArg
 58991  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+9674) == 0 {
 58992  			var rc int32 = SQLITE_ERROR
 58993  			if *(*uintptr)(unsafe.Pointer(argv + 2*8)) != 0 {
 58994  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 58995  				var x int32 = libc.Xatoi(tls, z)
 58996  				if x != 0 {
 58997  					rc = x
 58998  					for int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x04 != 0 {
 58999  						z++
 59000  					}
 59001  					for int32(sqlite3.Xsqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z))])&0x01 != 0 {
 59002  						z++
 59003  					}
 59004  				}
 59005  				if *(*uint8)(unsafe.Pointer(z)) != 0 {
 59006  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 59007  				}
 59008  			}
 59009  			return rc
 59010  		}
 59011  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4794) == 0 {
 59012  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 59013  			return SQLITE_OK
 59014  		}
 59015  	}
 59016  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 59017  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 59018  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38615},
 59019  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38634},
 59020  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38654},
 59021  		}
 59022  		var i int32
 59023  		for i = 0; uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})); i++ {
 59024  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FiFnctl {
 59025  				break
 59026  			}
 59027  		}
 59028  		if uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})) {
 59029  			*(*int32)(unsafe.Pointer(bp + 64)) = 0
 59030  			tvfsExecTcl(tls, p, ts+35624,
 59031  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 59032  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FzFnctl, -1),
 59033  				uintptr(0), uintptr(0))
 59034  			tvfsResultCode(tls, p, bp+64)
 59035  			if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 59036  				return func() int32 {
 59037  					if *(*int32)(unsafe.Pointer(bp + 64)) < 0 {
 59038  						return SQLITE_OK
 59039  					}
 59040  					return *(*int32)(unsafe.Pointer(bp + 64))
 59041  				}()
 59042  			}
 59043  		}
 59044  	}
 59045  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 59046  }
 59047  
 59048  type Fcntl = struct {
 59049  	FiFnctl      int32
 59050  	F__ccgo_pad1 [4]byte
 59051  	FzFnctl      uintptr
 59052  }
 59053  
 59054  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 59055  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59056  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59057  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 59058  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 59059  	}
 59060  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 59061  }
 59062  
 59063  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 59064  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59065  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59066  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 59067  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 59068  	}
 59069  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 59070  }
 59071  
 59072  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 59073  	bp := tls.Alloc(4)
 59074  	defer tls.Free(4)
 59075  
 59076  	var pTestfile uintptr = pFile
 59077  	var pFd uintptr
 59078  	var pId uintptr = uintptr(0)
 59079  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59080  
 59081  	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)))
 59082  	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))
 59083  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 59084  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 59085  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 59086  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 59087  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*56
 59088  	libc.Xmemset(tls, pTestfile, 0, uint64(unsafe.Sizeof(TestvfsFile{})))
 59089  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 59090  
 59091  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59092  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 59093  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 59094  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 59095  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 59096  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+uint64(1))
 59097  			for *(*uint8)(unsafe.Pointer(z)) != 0 {
 59098  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 59099  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 59100  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 59101  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 59102  			}
 59103  		}
 59104  		tvfsExecTcl(tls, p, ts+27421, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 59105  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59106  			var _objPtr uintptr = pArg
 59107  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59108  				tcl.XTclFreeObj(tls, _objPtr)
 59109  			}
 59110  		}
 59111  		if tvfsResultCode(tls, p, bp) != 0 {
 59112  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59113  				return *(*int32)(unsafe.Pointer(bp))
 59114  			}
 59115  		} else {
 59116  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59117  		}
 59118  	}
 59119  
 59120  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59121  		return SQLITE_IOERR
 59122  	}
 59123  	if tvfsInjectCantopenerr(tls, p) != 0 {
 59124  		return SQLITE_CANTOPEN
 59125  	}
 59126  	if tvfsInjectFullerr(tls, p) != 0 {
 59127  		return SQLITE_FULL
 59128  	}
 59129  
 59130  	if !(pId != 0) {
 59131  		pId = tcl.XTcl_NewStringObj(tls, ts+38661, -1)
 59132  	}
 59133  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 59134  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 59135  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59136  
 59137  	*(*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)
 59138  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 59139  		var pMethods uintptr
 59140  		var nByte int32
 59141  
 59142  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 59143  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 59144  		} else {
 59145  			nByte = int32(uintptr(0) + 104)
 59146  		}
 59147  
 59148  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 59149  		libc.Xmemcpy(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint64(nByte))
 59150  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 59151  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 59152  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 59153  		}
 59154  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 59155  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 59156  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 59157  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 59158  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 59159  		}
 59160  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 59161  	}
 59162  
 59163  	return *(*int32)(unsafe.Pointer(bp))
 59164  }
 59165  
 59166  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 59167  	bp := tls.Alloc(4)
 59168  	defer tls.Free(4)
 59169  
 59170  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59171  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59172  
 59173  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 59174  		tvfsExecTcl(tls, p, ts+35661,
 59175  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 59176  		tvfsResultCode(tls, p, bp)
 59177  	}
 59178  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 59179  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 59180  	}
 59181  	return *(*int32)(unsafe.Pointer(bp))
 59182  }
 59183  
 59184  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 59185  	bp := tls.Alloc(4)
 59186  	defer tls.Free(4)
 59187  
 59188  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59189  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 59190  		var zArg uintptr = uintptr(0)
 59191  		if flags == SQLITE_ACCESS_EXISTS {
 59192  			zArg = ts + 38666
 59193  		}
 59194  		if flags == SQLITE_ACCESS_READWRITE {
 59195  			zArg = ts + 38687
 59196  		}
 59197  		if flags == SQLITE_ACCESS_READ {
 59198  			zArg = ts + 38711
 59199  		}
 59200  		tvfsExecTcl(tls, p, ts+35669,
 59201  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 59202  		if tvfsResultCode(tls, p, bp) != 0 {
 59203  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59204  				return *(*int32)(unsafe.Pointer(bp))
 59205  			}
 59206  		} else {
 59207  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 59208  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 59209  				return SQLITE_OK
 59210  			}
 59211  		}
 59212  	}
 59213  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 59214  }
 59215  
 59216  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 59217  	bp := tls.Alloc(4)
 59218  	defer tls.Free(4)
 59219  
 59220  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 59221  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 59222  		tvfsExecTcl(tls, p, ts+35677, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 59223  		if tvfsResultCode(tls, p, bp) != 0 {
 59224  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59225  				return *(*int32)(unsafe.Pointer(bp))
 59226  			}
 59227  		}
 59228  	}
 59229  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 59230  }
 59231  
 59232  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 59233  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 59234  }
 59235  
 59236  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 59237  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 59238  }
 59239  
 59240  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 59241  	return (*struct {
 59242  		f func(*libc.TLS, uintptr, uintptr) int32
 59243  	})(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)
 59244  }
 59245  
 59246  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 59247  	bp := tls.Alloc(4)
 59248  	defer tls.Free(4)
 59249  
 59250  	var p uintptr
 59251  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59252  	var pBuffer uintptr
 59253  	var pFd uintptr
 59254  
 59255  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59256  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59257  
 59258  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59259  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 59260  		tvfsExecTcl(tls, p, ts+38730, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 59261  		if tvfsResultCode(tls, p, bp) != 0 {
 59262  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59263  				return *(*int32)(unsafe.Pointer(bp))
 59264  			}
 59265  		}
 59266  	}
 59267  
 59268  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59269  		return SQLITE_IOERR
 59270  	}
 59271  
 59272  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59273  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 59274  			break
 59275  		}
 59276  	}
 59277  	if !(pBuffer != 0) {
 59278  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 59279  		var nByte int32 = int32(uint64(unsafe.Sizeof(TestvfsBuffer{})) + uint64(szName) + uint64(1))
 59280  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 59281  		libc.Xmemset(tls, pBuffer, 0, uint64(nByte))
 59282  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*8224
 59283  		libc.Xmemcpy(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint64(szName+1))
 59284  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 59285  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 59286  	}
 59287  
 59288  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 59289  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 59290  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 59291  	return *(*int32)(unsafe.Pointer(bp))
 59292  }
 59293  
 59294  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 59295  	if *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) == uintptr(0) {
 59296  		*(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 59297  		libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0, uint64(pgsz))
 59298  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 59299  	}
 59300  }
 59301  
 59302  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 59303  	bp := tls.Alloc(4)
 59304  	defer tls.Free(4)
 59305  
 59306  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59307  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59308  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59309  
 59310  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59311  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59312  		return (*struct {
 59313  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59314  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 59315  	}
 59316  
 59317  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 59318  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 59319  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59320  			return *(*int32)(unsafe.Pointer(bp))
 59321  		}
 59322  	}
 59323  
 59324  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 59325  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 59326  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 59327  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 59328  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 59329  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 59330  		tvfsExecTcl(tls, p, ts+35754,
 59331  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 59332  		tvfsResultCode(tls, p, bp)
 59333  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59334  			var _objPtr uintptr = pArg
 59335  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59336  				tcl.XTclFreeObj(tls, _objPtr)
 59337  			}
 59338  		}
 59339  	}
 59340  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59341  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 59342  	}
 59343  
 59344  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))) != 0) {
 59345  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 59346  	}
 59347  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 59348  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))
 59349  	}
 59350  
 59351  	return *(*int32)(unsafe.Pointer(bp))
 59352  }
 59353  
 59354  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 59355  	bp := tls.Alloc(100)
 59356  	defer tls.Free(100)
 59357  
 59358  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 59359  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59360  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59361  	var nLock int32
 59362  
 59363  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59364  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59365  		return (*struct {
 59366  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59367  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 59368  	}
 59369  
 59370  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 59371  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]uint8{})), bp+16, ts+17826, libc.VaList(bp, ofst, n))
 59372  		nLock = int32(libc.Xstrlen(tls, bp+16))
 59373  		if flags&SQLITE_SHM_LOCK != 0 {
 59374  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38739)
 59375  		} else {
 59376  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38745)
 59377  		}
 59378  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 59379  		if flags&SQLITE_SHM_SHARED != 0 {
 59380  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38753)
 59381  		} else {
 59382  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38761)
 59383  		}
 59384  		tvfsExecTcl(tls, p, ts+35733,
 59385  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 59386  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 59387  		tvfsResultCode(tls, p, bp+96)
 59388  	}
 59389  
 59390  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59391  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 59392  	}
 59393  
 59394  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59395  		var isLock int32 = flags & SQLITE_SHM_LOCK
 59396  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 59397  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 59398  		if isLock != 0 {
 59399  			var p2 uintptr
 59400  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 59401  				if p2 == pFd {
 59402  					continue
 59403  				}
 59404  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 59405  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 59406  					break
 59407  				}
 59408  			}
 59409  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59410  				if isExcl != 0 {
 59411  					*(*u32)(unsafe.Pointer(pFd + 40)) |= mask
 59412  				}
 59413  				if !(isExcl != 0) {
 59414  					*(*u32)(unsafe.Pointer(pFd + 44)) |= mask
 59415  				}
 59416  			}
 59417  		} else {
 59418  			if isExcl != 0 {
 59419  				*(*u32)(unsafe.Pointer(pFd + 40)) &= ^mask
 59420  			}
 59421  			if !(isExcl != 0) {
 59422  				*(*u32)(unsafe.Pointer(pFd + 44)) &= ^mask
 59423  			}
 59424  		}
 59425  	}
 59426  
 59427  	return *(*int32)(unsafe.Pointer(bp + 96))
 59428  }
 59429  
 59430  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 59431  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59432  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59433  
 59434  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 59435  		var z uintptr
 59436  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 59437  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 59438  		} else {
 59439  			z = ts + 584
 59440  		}
 59441  		tvfsExecTcl(tls, p, ts+35742, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59442  	}
 59443  
 59444  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59445  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59446  		(*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)
 59447  		return
 59448  	}
 59449  }
 59450  
 59451  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 59452  	bp := tls.Alloc(4)
 59453  	defer tls.Free(4)
 59454  
 59455  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59456  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59457  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59458  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 59459  	var ppFd uintptr
 59460  
 59461  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59462  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59463  		return (*struct {
 59464  			f func(*libc.TLS, uintptr, int32) int32
 59465  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 59466  	}
 59467  
 59468  	if !(pBuffer != 0) {
 59469  		return SQLITE_OK
 59470  	}
 59471  
 59472  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 59473  		tvfsExecTcl(tls, p, ts+35723,
 59474  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59475  		tvfsResultCode(tls, p, bp)
 59476  	}
 59477  
 59478  	for ppFd = pBuffer + 8208; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 48 {
 59479  	}
 59480  
 59481  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 59482  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 59483  
 59484  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 59485  		var i int32
 59486  		var pp uintptr
 59487  		for pp = p + 40; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 8216 {
 59488  		}
 59489  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 59490  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)) != 0; i++ {
 59491  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)))
 59492  		}
 59493  		tcl.XTcl_Free(tls, pBuffer)
 59494  	}
 59495  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 59496  
 59497  	return *(*int32)(unsafe.Pointer(bp))
 59498  }
 59499  
 59500  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 59501  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59502  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 59503  }
 59504  
 59505  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 59506  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59507  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 59508  }
 59509  
 59510  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59511  	bp := tls.Alloc(568)
 59512  	defer tls.Free(568)
 59513  
 59514  	var p uintptr = cd
 59515  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 59516  		{FzName: ts + 38772},
 59517  		{FzName: ts + 10138, FeCmd: uint32(1)},
 59518  		{FzName: ts + 38776, FeCmd: uint32(2)},
 59519  		{FzName: ts + 38783, FeCmd: uint32(3)},
 59520  		{FzName: ts + 38789, FeCmd: uint32(7)},
 59521  		{FzName: ts + 38797, FeCmd: uint32(8)},
 59522  		{FzName: ts + 38809, FeCmd: uint32(4)},
 59523  		{FzName: ts + 38816, FeCmd: uint32(5)},
 59524  		{FzName: ts + 38824, FeCmd: uint32(6)},
 59525  		{},
 59526  	}
 59527  
 59528  	if objc < 2 {
 59529  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 59530  		return TCL_ERROR
 59531  	}
 59532  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 59533  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+38835, 0, bp+256) != 0 {
 59534  		return TCL_ERROR
 59535  	}
 59536  	tcl.XTcl_ResetResult(tls, interp)
 59537  
 59538  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 59539  	case uint32(0):
 59540  		{
 59541  			var pObj uintptr
 59542  			var rc int32
 59543  			var pBuffer uintptr
 59544  			var zName uintptr
 59545  			if objc != 3 && objc != 4 {
 59546  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38846)
 59547  				return TCL_ERROR
 59548  			}
 59549  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 59550  			rc = (*struct {
 59551  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59552  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 59553  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 59554  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 59555  			if rc != SQLITE_OK {
 59556  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38859,
 59557  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59558  				tcl.XTcl_Free(tls, zName)
 59559  				return TCL_ERROR
 59560  			}
 59561  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59562  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 59563  					break
 59564  				}
 59565  			}
 59566  			tcl.XTcl_Free(tls, zName)
 59567  			if !(pBuffer != 0) {
 59568  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+38885, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59569  				return TCL_ERROR
 59570  			}
 59571  			if objc == 4 {
 59572  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+260)
 59573  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59574  				if pgsz == 0 {
 59575  					pgsz = 65536
 59576  				}
 59577  				for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256))*pgsz < *(*int32)(unsafe.Pointer(bp + 260)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 59578  					var nByte int32 = pgsz
 59579  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 256)), pgsz)
 59580  					if *(*int32)(unsafe.Pointer(bp + 260))-*(*int32)(unsafe.Pointer(bp + 256))*pgsz < pgsz {
 59581  						nByte = *(*int32)(unsafe.Pointer(bp + 260))
 59582  					}
 59583  					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))
 59584  				}
 59585  			}
 59586  
 59587  			pObj = tcl.XTcl_NewObj(tls)
 59588  			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))++ {
 59589  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59590  				if pgsz == 0 {
 59591  					pgsz = 65536
 59592  				}
 59593  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), pgsz))
 59594  			}
 59595  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 59596  			break
 59597  
 59598  		}
 59599  
 59600  	case uint32(2):
 59601  		{
 59602  			*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 59603  			*(*int32)(unsafe.Pointer(bp + 264)) = 0
 59604  			var mask int32 = 0
 59605  			if objc != 3 {
 59606  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32419)
 59607  				return TCL_ERROR
 59608  			}
 59609  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+264, bp+272) != 0 {
 59610  				return TCL_ERROR
 59611  			}
 59612  			tcl.XTcl_ResetResult(tls, interp)
 59613  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256)) < *(*int32)(unsafe.Pointer(bp + 264)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 59614  				var iMethod int32
 59615  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 272)) + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)))
 59616  				for iMethod = 0; iMethod < int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 59617  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 59618  						mask = mask | vfsmethod[iMethod].Fmask
 59619  						break
 59620  					}
 59621  				}
 59622  				if iMethod == int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))) {
 59623  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+38900, zElem, 0))
 59624  					return TCL_ERROR
 59625  				}
 59626  			}
 59627  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 59628  			break
 59629  
 59630  		}
 59631  
 59632  	case uint32(4):
 59633  		{
 59634  			if objc == 3 {
 59635  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59636  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59637  						var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59638  						if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59639  							tcl.XTclFreeObj(tls, _objPtr)
 59640  						}
 59641  					}
 59642  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 59643  				}
 59644  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+280)
 59645  				if *(*int32)(unsafe.Pointer(bp + 280)) > 0 {
 59646  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59647  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 59648  				}
 59649  			} else if objc != 2 {
 59650  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 59651  				return TCL_ERROR
 59652  			}
 59653  
 59654  			tcl.XTcl_ResetResult(tls, interp)
 59655  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59656  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 59657  			}
 59658  
 59659  			break
 59660  
 59661  		}
 59662  
 59663  	case uint32(8):
 59664  		fallthrough
 59665  	case uint32(3):
 59666  		fallthrough
 59667  	case uint32(7):
 59668  		{
 59669  			var pTest uintptr = uintptr(0)
 59670  			var iRet int32
 59671  
 59672  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 59673  			case uint32(3):
 59674  				pTest = p + 60
 59675  				break
 59676  			case uint32(7):
 59677  				pTest = p + 72
 59678  				break
 59679  			case uint32(8):
 59680  				pTest = p + 84
 59681  				break
 59682  			default:
 59683  			}
 59684  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 59685  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 59686  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 59687  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 59688  
 59689  			if objc == 4 {
 59690  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+284) ||
 59691  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+288) {
 59692  					return TCL_ERROR
 59693  				}
 59694  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 59695  					if *(*int32)(unsafe.Pointer(bp + 288)) != 0 {
 59696  						return FAULT_INJECT_PERSISTENT
 59697  					}
 59698  					return FAULT_INJECT_TRANSIENT
 59699  				}()
 59700  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 284))
 59701  			} else if objc != 2 {
 59702  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38917)
 59703  				return TCL_ERROR
 59704  			}
 59705  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 59706  			break
 59707  
 59708  		}
 59709  
 59710  	case uint32(1):
 59711  		{
 59712  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 59713  			break
 59714  
 59715  		}
 59716  
 59717  	case uint32(5):
 59718  		{
 59719  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 304)) = [16]DeviceFlag{
 59720  				{FzName: ts + 38931, FiValue: -1},
 59721  				{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 59722  				{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 59723  				{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 59724  				{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 59725  				{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 59726  				{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 59727  				{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 59728  				{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 59729  				{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 59730  				{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 59731  				{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 59732  				{FzName: ts + 38939, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 59733  				{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 59734  				{FzName: ts + 38961, FiValue: SQLITE_IOCAP_IMMUTABLE},
 59735  				{},
 59736  			}
 59737  			var pRet uintptr
 59738  			var iFlag int32
 59739  
 59740  			if objc > 3 {
 59741  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38971)
 59742  				return TCL_ERROR
 59743  			}
 59744  			if objc == 3 {
 59745  				var j int32
 59746  				var iNew int32 = 0
 59747  				*(*uintptr)(unsafe.Pointer(bp + 296)) = uintptr(0)
 59748  				*(*int32)(unsafe.Pointer(bp + 292)) = 0
 59749  
 59750  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+292, bp+296) != 0 {
 59751  					return TCL_ERROR
 59752  				}
 59753  
 59754  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 292)); j++ {
 59755  					*(*int32)(unsafe.Pointer(bp + 560)) = 0
 59756  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(j)*8)), bp+304,
 59757  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+560) != 0 {
 59758  						return TCL_ERROR
 59759  					}
 59760  					if (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 292)) > 1 {
 59761  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+38983, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59762  						return TCL_ERROR
 59763  					}
 59764  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue
 59765  				}
 59766  
 59767  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 59768  			}
 59769  
 59770  			pRet = tcl.XTcl_NewObj(tls)
 59771  			for iFlag = 0; uint64(iFlag) < uint64(unsafe.Sizeof([16]DeviceFlag{}))/uint64(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 59772  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FiValue != 0 {
 59773  					tcl.XTcl_ListObjAppendElement(tls,
 59774  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FzName, -1))
 59775  				}
 59776  			}
 59777  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 59778  
 59779  			break
 59780  
 59781  		}
 59782  
 59783  	case uint32(6):
 59784  		{
 59785  			if objc > 3 {
 59786  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38995)
 59787  				return TCL_ERROR
 59788  			}
 59789  			if objc == 3 {
 59790  				*(*int32)(unsafe.Pointer(bp + 564)) = 0
 59791  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+564) != 0 {
 59792  					return TCL_ERROR
 59793  				}
 59794  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 564))
 59795  			}
 59796  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 59797  			break
 59798  
 59799  		}
 59800  	}
 59801  
 59802  	return TCL_OK
 59803  }
 59804  
 59805  type TestvfsSubcmd = struct {
 59806  	FzName       uintptr
 59807  	FeCmd        uint32
 59808  	F__ccgo_pad1 [4]byte
 59809  }
 59810  
 59811  type VfsMethod = struct {
 59812  	FzName       uintptr
 59813  	Fmask        int32
 59814  	F__ccgo_pad1 [4]byte
 59815  }
 59816  
 59817  var vfsmethod = [18]VfsMethod{
 59818  	{FzName: ts + 38730, Fmask: TESTVFS_SHMOPEN_MASK},
 59819  	{FzName: ts + 35733, Fmask: TESTVFS_SHMLOCK_MASK},
 59820  	{FzName: ts + 35742, Fmask: TESTVFS_SHMBARRIER_MASK},
 59821  	{FzName: ts + 35723, Fmask: TESTVFS_SHMCLOSE_MASK},
 59822  	{FzName: ts + 35754, Fmask: TESTVFS_SHMMAP_MASK},
 59823  	{FzName: ts + 27843, Fmask: TESTVFS_SYNC_MASK},
 59824  	{FzName: ts + 35661, Fmask: TESTVFS_DELETE_MASK},
 59825  	{FzName: ts + 35569, Fmask: TESTVFS_WRITE_MASK},
 59826  	{FzName: ts + 35563, Fmask: TESTVFS_READ_MASK},
 59827  	{FzName: ts + 35576, Fmask: TESTVFS_TRUNCATE_MASK},
 59828  	{FzName: ts + 27421, Fmask: TESTVFS_OPEN_MASK},
 59829  	{FzName: ts + 35556, Fmask: TESTVFS_CLOSE_MASK},
 59830  	{FzName: ts + 35669, Fmask: TESTVFS_ACCESS_MASK},
 59831  	{FzName: ts + 35677, Fmask: TESTVFS_FULLPATHNAME_MASK},
 59832  	{FzName: ts + 35602, Fmask: TESTVFS_UNLOCK_MASK},
 59833  	{FzName: ts + 35596, Fmask: TESTVFS_LOCK_MASK},
 59834  	{FzName: ts + 38596, Fmask: TESTVFS_CKLOCK_MASK},
 59835  	{FzName: ts + 35624, Fmask: TESTVFS_FCNTL_MASK},
 59836  }
 59837  
 59838  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 59839  	var p uintptr = cd
 59840  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59841  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59842  			var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59843  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59844  				tcl.XTclFreeObj(tls, _objPtr)
 59845  			}
 59846  		}
 59847  	}
 59848  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 59849  	libc.Xmemset(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint64(unsafe.Sizeof(sqlite3_vfs{})))
 59850  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 59851  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Testvfs{})))
 59852  	tcl.XTcl_Free(tls, p)
 59853  }
 59854  
 59855  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59856  	bp := tls.Alloc(28)
 59857  	defer tls.Free(28)
 59858  
 59859  	var p uintptr
 59860  	var pVfs uintptr
 59861  	var zVfs uintptr
 59862  	var nByte int32
 59863  
 59864  	var i int32
 59865  
 59866  	var zSwitch uintptr
 59867  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59868  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59869  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 59870  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 59871  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 59872  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 59873  
 59874  	if !(objc < 2 || 0 != objc%2) {
 59875  		goto __1
 59876  	}
 59877  	goto bad_args
 59878  __1:
 59879  	;
 59880  	i = 2
 59881  __2:
 59882  	if !(i < objc) {
 59883  		goto __4
 59884  	}
 59885  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp)
 59886  
 59887  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39003, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59888  		goto __5
 59889  	}
 59890  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+4) != 0) {
 59891  		goto __7
 59892  	}
 59893  	return TCL_ERROR
 59894  __7:
 59895  	;
 59896  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 59897  		goto __8
 59898  	}
 59899  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59900  __8:
 59901  	;
 59902  	goto __6
 59903  __5:
 59904  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26779, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59905  		goto __9
 59906  	}
 59907  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+8) != 0) {
 59908  		goto __11
 59909  	}
 59910  	return TCL_ERROR
 59911  __11:
 59912  	;
 59913  	goto __10
 59914  __9:
 59915  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39010, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59916  		goto __12
 59917  	}
 59918  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+12) != 0) {
 59919  		goto __14
 59920  	}
 59921  	return TCL_ERROR
 59922  __14:
 59923  	;
 59924  	goto __13
 59925  __12:
 59926  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39020, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59927  		goto __15
 59928  	}
 59929  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+16) != 0) {
 59930  		goto __17
 59931  	}
 59932  	return TCL_ERROR
 59933  __17:
 59934  	;
 59935  	goto __16
 59936  __15:
 59937  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39032, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59938  		goto __18
 59939  	}
 59940  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+20) != 0) {
 59941  		goto __20
 59942  	}
 59943  	return TCL_ERROR
 59944  __20:
 59945  	;
 59946  	goto __19
 59947  __18:
 59948  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39042, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59949  		goto __21
 59950  	}
 59951  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+24) != 0) {
 59952  		goto __23
 59953  	}
 59954  	return TCL_ERROR
 59955  __23:
 59956  	;
 59957  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 59958  		goto __24
 59959  	}
 59960  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59961  __24:
 59962  	;
 59963  	goto __22
 59964  __21:
 59965  	goto bad_args
 59966  __22:
 59967  	;
 59968  __19:
 59969  	;
 59970  __16:
 59971  	;
 59972  __13:
 59973  	;
 59974  __10:
 59975  	;
 59976  __6:
 59977  	;
 59978  	goto __3
 59979  __3:
 59980  	i = i + 2
 59981  	goto __2
 59982  	goto __4
 59983  __4:
 59984  	;
 59985  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 12))) < uint64(unsafe.Sizeof(TestvfsFile{}))) {
 59986  		goto __25
 59987  	}
 59988  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 59989  __25:
 59990  	;
 59991  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 59992  	nByte = int32(uint64(unsafe.Sizeof(Testvfs{})) + uint64(int32(libc.Xstrlen(tls, zVfs))) + uint64(1))
 59993  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 59994  	libc.Xmemset(tls, p, 0, uint64(nByte))
 59995  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 59996  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 59997  
 59998  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 59999  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60000  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 60001  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 60002  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 60003  
 60004  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*104
 60005  	libc.Xmemcpy(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+uint64(1))
 60006  
 60007  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 60008  	libc.Xmemcpy(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 60009  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 60010  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 60011  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 60012  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 60013  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 60014  		goto __26
 60015  	}
 60016  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 60017  __26:
 60018  	;
 60019  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 60020  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 60021  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 60022  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 60023  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 60024  
 60025  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 60026  
 60027  	return TCL_OK
 60028  
 60029  bad_args:
 60030  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39051)
 60031  	return TCL_ERROR
 60032  }
 60033  
 60034  var tvfs_vfs = sqlite3_vfs{
 60035  	FiVersion:      3,
 60036  	FxOpen:         0,
 60037  	FxDelete:       0,
 60038  	FxAccess:       0,
 60039  	FxFullPathname: 0,
 60040  	FxRandomness:   0,
 60041  	FxSleep:        0,
 60042  	FxCurrentTime:  0,
 60043  }
 60044  
 60045  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60046  	bp := tls.Alloc(88)
 60047  	defer tls.Free(88)
 60048  
 60049  	*(*[3]uintptr)(unsafe.Pointer(bp + 8)) = [3]uintptr{ts + 39155, ts + 13978, uintptr(0)}
 60050  	*(*[3]uintptr)(unsafe.Pointer(bp + 40)) = [3]uintptr{ts + 39162, ts + 39167, uintptr(0)}
 60051  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 60052  	var rc int32 = SQLITE_OK
 60053  	var zDbname uintptr = uintptr(0)
 60054  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 60055  	*(*int32)(unsafe.Pointer(bp + 64)) = 0
 60056  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 60057  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 60058  
 60059  	if objc != 7 {
 60060  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 60061  			ts+39174)
 60062  		return TCL_ERROR
 60063  	}
 60064  
 60065  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60066  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 60067  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+32) != 0 ||
 60068  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+64) != 0 ||
 60069  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+68) != 0 ||
 60070  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp+72) != 0 {
 60071  		return TCL_ERROR
 60072  	}
 60073  
 60074  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+80)
 60075  	if *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 60076  		return TCL_ERROR
 60077  	}
 60078  	rc = (*struct {
 60079  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 60080  	})(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)),
 60081  		func() int32 {
 60082  			if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 60083  				return SQLITE_SHM_SHARED
 60084  			}
 60085  			return SQLITE_SHM_EXCLUSIVE
 60086  		}()|
 60087  			func() int32 {
 60088  				if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 60089  					return SQLITE_SHM_LOCK
 60090  				}
 60091  				return SQLITE_SHM_UNLOCK
 60092  			}())
 60093  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60094  	return TCL_OK
 60095  }
 60096  
 60097  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60098  	bp := tls.Alloc(48)
 60099  	defer tls.Free(48)
 60100  
 60101  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 60102  	var rc int32 = SQLITE_OK
 60103  	var zDbname uintptr = uintptr(0)
 60104  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 60105  	*(*int32)(unsafe.Pointer(bp + 28)) = -1
 60106  
 60107  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 60108  	var aShm uintptr
 60109  	var iOff int32
 60110  
 60111  	if objc != 4 && objc != 5 {
 60112  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39230)
 60113  		return TCL_ERROR
 60114  	}
 60115  
 60116  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60117  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 ||
 60118  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 ||
 60119  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 60120  		return TCL_ERROR
 60121  	}
 60122  
 60123  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+32)
 60124  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 60125  		return TCL_ERROR
 60126  	}
 60127  	rc = (*struct {
 60128  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 60129  	})(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)
 60130  	if rc != SQLITE_OK {
 60131  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60132  		return TCL_ERROR
 60133  	}
 60134  	if *(*uintptr)(unsafe.Pointer(bp + 40)) == uintptr(0) {
 60135  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39253, 0))
 60136  		return TCL_ERROR
 60137  	}
 60138  	aShm = *(*uintptr)(unsafe.Pointer(bp + 40))
 60139  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 24))
 60140  
 60141  	if objc == 5 {
 60142  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
 60143  	}
 60144  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 60145  
 60146  	return TCL_OK
 60147  }
 60148  
 60149  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 60150  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39277, *(*uintptr)(unsafe.Pointer(&struct {
 60151  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 60152  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 60153  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39285, *(*uintptr)(unsafe.Pointer(&struct {
 60154  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60155  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 60156  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39297, *(*uintptr)(unsafe.Pointer(&struct {
 60157  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60158  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 60159  	return TCL_OK
 60160  }
 60161  
 60162  type TestWindow1 = struct {
 60163  	FxStep    uintptr
 60164  	FxFinal   uintptr
 60165  	FxValue   uintptr
 60166  	FxInverse uintptr
 60167  	Finterp   uintptr
 60168  }
 60169  
 60170  type TestWindow = TestWindow1
 60171  
 60172  type TestWindowCtx1 = struct{ FpVal uintptr }
 60173  
 60174  type TestWindowCtx = TestWindowCtx1
 60175  
 60176  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 60177  	var i int32
 60178  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 60179  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 60180  		if bInverse != 0 {
 60181  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 60182  		}
 60183  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 60184  	}())
 60185  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 60186  
 60187  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 60188  	if pCtx != 0 {
 60189  		var zResult uintptr
 60190  		var rc int32
 60191  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60192  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 60193  		} else {
 60194  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 60195  		}
 60196  		for i = 0; i < nArg; i++ {
 60197  			var pArg uintptr
 60198  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))), -1)
 60199  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 60200  		}
 60201  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 60202  		if rc != TCL_OK {
 60203  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 60204  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 60205  		} else {
 60206  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60207  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60208  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 60209  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60210  						tcl.XTclFreeObj(tls, _objPtr)
 60211  					}
 60212  				}
 60213  			}
 60214  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 60215  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 60216  		}
 60217  	}
 60218  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60219  		var _objPtr uintptr = pEval
 60220  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60221  			tcl.XTclFreeObj(tls, _objPtr)
 60222  		}
 60223  	}
 60224  }
 60225  
 60226  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 60227  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 60228  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 60229  		if bValue != 0 {
 60230  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 60231  		}
 60232  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 60233  	}())
 60234  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 60235  
 60236  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 60237  	if pCtx != 0 {
 60238  		var zResult uintptr
 60239  		var rc int32
 60240  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60241  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 60242  		} else {
 60243  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 60244  		}
 60245  
 60246  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 60247  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 60248  		if rc != TCL_OK {
 60249  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 60250  		} else {
 60251  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 60252  		}
 60253  
 60254  		if bValue == 0 {
 60255  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 60256  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60257  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 60258  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60259  						tcl.XTclFreeObj(tls, _objPtr)
 60260  					}
 60261  				}
 60262  			}
 60263  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 60264  		}
 60265  	}
 60266  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60267  		var _objPtr uintptr = pEval
 60268  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60269  			tcl.XTclFreeObj(tls, _objPtr)
 60270  		}
 60271  	}
 60272  }
 60273  
 60274  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60275  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 60276  }
 60277  
 60278  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60279  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 60280  }
 60281  
 60282  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 60283  	doTestWindowFinalize(tls, 0, ctx)
 60284  }
 60285  
 60286  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 60287  	doTestWindowFinalize(tls, 1, ctx)
 60288  }
 60289  
 60290  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 60291  	tcl.XTcl_Free(tls, pCtx)
 60292  }
 60293  
 60294  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60295  	bp := tls.Alloc(8)
 60296  	defer tls.Free(8)
 60297  
 60298  	var pNew uintptr
 60299  
 60300  	var zName uintptr
 60301  	var rc int32
 60302  
 60303  	if objc != 7 {
 60304  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39314)
 60305  		return TCL_ERROR
 60306  	}
 60307  
 60308  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60309  		return TCL_ERROR
 60310  	}
 60311  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 60312  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 60313  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(TestWindow{})))
 60314  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 60315  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 60316  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 60317  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)))
 60318  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 60319  
 60320  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 60321  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 60322  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 60323  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 60324  
 60325  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 60326  		*(*uintptr)(unsafe.Pointer(&struct {
 60327  			f func(*libc.TLS, uintptr, int32, uintptr)
 60328  		}{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 {
 60329  			f func(*libc.TLS, uintptr, int32, uintptr)
 60330  		}{testWindowInverse})),
 60331  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 60332  	if rc != SQLITE_OK {
 60333  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60334  		return TCL_ERROR
 60335  	}
 60336  
 60337  	return TCL_OK
 60338  }
 60339  
 60340  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60341  	bp := tls.Alloc(8)
 60342  	defer tls.Free(8)
 60343  
 60344  	var rc int32
 60345  
 60346  	if !(objc != 2) {
 60347  		goto __1
 60348  	}
 60349  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60350  	return TCL_ERROR
 60351  __1:
 60352  	;
 60353  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 60354  		goto __2
 60355  	}
 60356  	return TCL_ERROR
 60357  __2:
 60358  	;
 60359  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60360  		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 {
 60361  			f func(*libc.TLS, uintptr, int32, uintptr)
 60362  		}{testWindowInverse})),
 60363  		uintptr(0))
 60364  	if !(rc != SQLITE_MISUSE) {
 60365  		goto __3
 60366  	}
 60367  	goto error
 60368  __3:
 60369  	;
 60370  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60371  		*(*uintptr)(unsafe.Pointer(&struct {
 60372  			f func(*libc.TLS, uintptr, int32, uintptr)
 60373  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60374  			f func(*libc.TLS, uintptr, int32, uintptr)
 60375  		}{testWindowInverse})),
 60376  		uintptr(0))
 60377  	if !(rc != SQLITE_MISUSE) {
 60378  		goto __4
 60379  	}
 60380  	goto error
 60381  __4:
 60382  	;
 60383  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60384  		*(*uintptr)(unsafe.Pointer(&struct {
 60385  			f func(*libc.TLS, uintptr, int32, uintptr)
 60386  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60387  			f func(*libc.TLS, uintptr, int32, uintptr)
 60388  		}{testWindowInverse})),
 60389  		uintptr(0))
 60390  	if !(rc != SQLITE_MISUSE) {
 60391  		goto __5
 60392  	}
 60393  	goto error
 60394  __5:
 60395  	;
 60396  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60397  		*(*uintptr)(unsafe.Pointer(&struct {
 60398  			f func(*libc.TLS, uintptr, int32, uintptr)
 60399  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 60400  		uintptr(0))
 60401  	if !(rc != SQLITE_MISUSE) {
 60402  		goto __6
 60403  	}
 60404  	goto error
 60405  __6:
 60406  	;
 60407  	return TCL_OK
 60408  
 60409  error:
 60410  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39355, -1))
 60411  	return TCL_ERROR
 60412  }
 60413  
 60414  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60415  	var pInt uintptr
 60416  
 60417  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 60418  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39373, -1)
 60419  		return
 60420  	}
 60421  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60422  	if pInt != 0 {
 60423  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60424  	}
 60425  }
 60426  
 60427  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60428  	var pInt uintptr
 60429  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60430  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60431  }
 60432  
 60433  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 60434  	var res sqlite3_int64 = int64(0)
 60435  	var pInt uintptr
 60436  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60437  	if pInt != 0 {
 60438  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60439  	}
 60440  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60441  }
 60442  
 60443  func sumintValue(tls *libc.TLS, ctx uintptr) {
 60444  	var res sqlite3_int64 = int64(0)
 60445  	var pInt uintptr
 60446  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60447  	if pInt != 0 {
 60448  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60449  	}
 60450  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60451  }
 60452  
 60453  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60454  	bp := tls.Alloc(8)
 60455  	defer tls.Free(8)
 60456  
 60457  	var rc int32
 60458  
 60459  	if objc != 2 {
 60460  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60461  		return TCL_ERROR
 60462  	}
 60463  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60464  		return TCL_ERROR
 60465  	}
 60466  
 60467  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39390, 1, SQLITE_UTF8, uintptr(0),
 60468  		*(*uintptr)(unsafe.Pointer(&struct {
 60469  			f func(*libc.TLS, uintptr, int32, uintptr)
 60470  		}{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 {
 60471  			f func(*libc.TLS, uintptr, int32, uintptr)
 60472  		}{sumintInverse})),
 60473  		uintptr(0))
 60474  
 60475  	if rc != SQLITE_OK {
 60476  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60477  		return TCL_ERROR
 60478  	}
 60479  	return TCL_OK
 60480  }
 60481  
 60482  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60483  	bp := tls.Alloc(8)
 60484  	defer tls.Free(8)
 60485  
 60486  	var rc int32
 60487  
 60488  	if objc != 2 {
 60489  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60490  		return TCL_ERROR
 60491  	}
 60492  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60493  		return TCL_ERROR
 60494  	}
 60495  
 60496  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39397, -1, SQLITE_UTF8, uintptr(0),
 60497  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60498  			f func(*libc.TLS, uintptr, int32, uintptr)
 60499  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 60500  
 60501  	if rc != SQLITE_OK {
 60502  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60503  		return TCL_ERROR
 60504  	}
 60505  	return TCL_OK
 60506  }
 60507  
 60508  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 60509  	var i int32
 60510  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd14))/uint64(unsafe.Sizeof(struct {
 60511  		FzName       uintptr
 60512  		FxProc       uintptr
 60513  		FclientData  int32
 60514  		F__ccgo_pad1 [4]byte
 60515  	}{})); i++ {
 60516  		var c ClientData = uintptr(intptr_t(aObjCmd14[i].FclientData))
 60517  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 60518  	}
 60519  	return TCL_OK
 60520  }
 60521  
 60522  var aObjCmd14 = [4]struct {
 60523  	FzName       uintptr
 60524  	FxProc       uintptr
 60525  	FclientData  int32
 60526  	F__ccgo_pad1 [4]byte
 60527  }{
 60528  	{FzName: ts + 39401, FxProc: 0},
 60529  	{FzName: ts + 39432, FxProc: 0},
 60530  	{FzName: ts + 39467, FxProc: 0},
 60531  	{FzName: ts + 39486, FxProc: 0},
 60532  }
 60533  
 60534  func init() {
 60535  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfClose
 60536  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfRead
 60537  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfWrite
 60538  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfTruncate
 60539  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfSync
 60540  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfFileSize
 60541  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfLock
 60542  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfUnlock
 60543  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 72)) = cfCheckReservedLock
 60544  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 80)) = cfFileControl
 60545  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 88)) = cfSectorSize
 60546  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 96)) = cfDeviceCharacteristics
 60547  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 104)) = cfShmMap
 60548  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 112)) = cfShmLock
 60549  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 120)) = cfShmBarrier
 60550  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 128)) = cfShmUnmap
 60551  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabCreate
 60552  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabConnect
 60553  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabBestIndex
 60554  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabDisconnect
 60555  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabDisconnect
 60556  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabOpen
 60557  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 56)) = csvtabClose
 60558  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 64)) = csvtabFilter
 60559  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 72)) = csvtabNext
 60560  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 80)) = csvtabEof
 60561  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 88)) = csvtabColumn
 60562  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 96)) = csvtabRowid
 60563  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabCreate
 60564  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabConnect
 60565  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabBestIndex
 60566  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabDisconnect
 60567  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabDisconnect
 60568  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabOpen
 60569  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 56)) = csvtabClose
 60570  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 64)) = csvtabFilter
 60571  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 72)) = csvtabNext
 60572  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 80)) = csvtabEof
 60573  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 88)) = csvtabColumn
 60574  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 96)) = csvtabRowid
 60575  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 104)) = csvtabUpdate
 60576  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobClose
 60577  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 24)) = incrblobInput
 60578  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobOutput
 60579  	*(*func(*libc.TLS, ClientData, int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 40)) = incrblobSeek
 60580  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 64)) = incrblobWatch
 60581  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 72)) = incrblobHandle
 60582  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 8)) = f5tCreateTokenizer
 60583  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 32)) = f5tTokenizerReturn
 60584  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 56)) = f5tTokenize
 60585  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 80)) = f5tCreateFunction
 60586  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 104)) = f5tMayBeCorrupt
 60587  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 128)) = f5tTokenHash
 60588  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 152)) = f5tRegisterMatchinfo
 60589  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 176)) = f5tRegisterTok
 60590  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60591  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60592  	}{db_enter}))
 60593  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60594  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60595  	}{db_leave}))
 60596  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60597  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60598  	}{sqlite3_mprintf_int}))
 60599  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60600  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60601  	}{sqlite3_mprintf_int64}))
 60602  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60603  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60604  	}{sqlite3_mprintf_long}))
 60605  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60606  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60607  	}{sqlite3_mprintf_str}))
 60608  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60609  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60610  	}{sqlite3_snprintf_str}))
 60611  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60612  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60613  	}{sqlite3_mprintf_stronly}))
 60614  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60615  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60616  	}{sqlite3_mprintf_double}))
 60617  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60618  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60619  	}{sqlite3_mprintf_scaled}))
 60620  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60621  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60622  	}{sqlite3_mprintf_hexdouble}))
 60623  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60624  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60625  	}{test_mprintf_z}))
 60626  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60627  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60628  	}{test_mprintf_n}))
 60629  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60630  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60631  	}{test_snprintf_int}))
 60632  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60633  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60634  	}{test_last_rowid}))
 60635  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60636  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60637  	}{test_exec_printf}))
 60638  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60639  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60640  	}{test_exec_hex}))
 60641  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 60642  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60643  	}{test_exec}))
 60644  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60645  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60646  	}{test_exec_nr}))
 60647  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 60648  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60649  	}{test_get_table_printf}))
 60650  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 60651  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60652  	}{sqlite_test_close}))
 60653  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 60654  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60655  	}{sqlite_test_close_v2}))
 60656  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 60657  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60658  	}{test_create_function}))
 60659  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 376)) = *(*uintptr)(unsafe.Pointer(&struct {
 60660  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60661  	}{test_create_aggregate}))
 60662  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60663  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60664  	}{test_drop_modules}))
 60665  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 408)) = *(*uintptr)(unsafe.Pointer(&struct {
 60666  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60667  	}{test_register_func}))
 60668  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 60669  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60670  	}{sqlite_abort}))
 60671  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 440)) = *(*uintptr)(unsafe.Pointer(&struct {
 60672  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60673  	}{test_bind}))
 60674  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 60675  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60676  	}{test_breakpoint}))
 60677  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 472)) = *(*uintptr)(unsafe.Pointer(&struct {
 60678  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60679  	}{test_key}))
 60680  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 60681  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60682  	}{test_rekey}))
 60683  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 504)) = *(*uintptr)(unsafe.Pointer(&struct {
 60684  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60685  	}{test_interrupt}))
 60686  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 60687  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60688  	}{delete_function}))
 60689  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 536)) = *(*uintptr)(unsafe.Pointer(&struct {
 60690  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60691  	}{delete_collation}))
 60692  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 60693  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60694  	}{get_autocommit}))
 60695  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 568)) = *(*uintptr)(unsafe.Pointer(&struct {
 60696  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60697  	}{test_busy_timeout}))
 60698  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 584)) = *(*uintptr)(unsafe.Pointer(&struct {
 60699  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60700  	}{test_printf}))
 60701  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 600)) = *(*uintptr)(unsafe.Pointer(&struct {
 60702  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60703  	}{test_io_trace}))
 60704  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 616)) = *(*uintptr)(unsafe.Pointer(&struct {
 60705  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60706  	}{clang_sanitize_address}))
 60707  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60708  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60709  	}{pager_open}))
 60710  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60711  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60712  	}{pager_close}))
 60713  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60714  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60715  	}{pager_commit}))
 60716  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60717  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60718  	}{pager_rollback}))
 60719  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60720  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60721  	}{pager_stmt_begin}))
 60722  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60723  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60724  	}{pager_stmt_commit}))
 60725  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60726  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60727  	}{pager_stmt_rollback}))
 60728  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60729  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60730  	}{pager_stats}))
 60731  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60732  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60733  	}{pager_pagecount}))
 60734  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60735  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60736  	}{page_get}))
 60737  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60738  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60739  	}{page_lookup}))
 60740  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60741  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60742  	}{page_unref}))
 60743  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60744  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60745  	}{page_read}))
 60746  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60747  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60748  	}{page_write}))
 60749  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60750  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60751  	}{page_number}))
 60752  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60753  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60754  	}{pager_truncate}))
 60755  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60756  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60757  	}{fake_big_file}))
 60758  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 60759  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60760  	}{testBitvecBuiltinTest}))
 60761  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60762  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60763  	}{testPendingByte}))
 60764  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 60765  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60766  	}{faultInstallCmd}))
 60767  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60768  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60769  	}{btree_open}))
 60770  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60771  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60772  	}{btree_close}))
 60773  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60774  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60775  	}{btree_begin_transaction}))
 60776  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60777  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60778  	}{btree_pager_stats}))
 60779  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60780  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60781  	}{btree_cursor}))
 60782  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60783  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60784  	}{btree_close_cursor}))
 60785  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60786  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60787  	}{btree_next}))
 60788  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60789  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60790  	}{btree_eof}))
 60791  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60792  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60793  	}{btree_payload_size}))
 60794  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60795  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60796  	}{btree_first}))
 60797  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60798  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60799  	}{btree_varint_test}))
 60800  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60801  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60802  	}{btree_from_db}))
 60803  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60804  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60805  	}{btree_ismemdb}))
 60806  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60807  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60808  	}{btree_set_cache_size}))
 60809  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60810  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60811  	}{tcl_thread_create}))
 60812  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60813  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60814  	}{tcl_thread_wait}))
 60815  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60816  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60817  	}{tcl_thread_halt}))
 60818  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60819  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60820  	}{tcl_thread_argc}))
 60821  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60822  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60823  	}{tcl_thread_argv}))
 60824  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60825  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60826  	}{tcl_thread_colname}))
 60827  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60828  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60829  	}{tcl_thread_result}))
 60830  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60831  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60832  	}{tcl_thread_error}))
 60833  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60834  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60835  	}{tcl_thread_compile}))
 60836  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60837  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60838  	}{tcl_thread_step}))
 60839  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60840  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60841  	}{tcl_thread_finalize}))
 60842  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60843  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60844  	}{tcl_thread_swap}))
 60845  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60846  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60847  	}{tcl_thread_db_get}))
 60848  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60849  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60850  	}{tcl_thread_db_put}))
 60851  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60852  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60853  	}{tcl_thread_stmt_get}))
 60854  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60855  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60856  	}{binarize}))
 60857  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60858  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60859  	}{test_value_overhead}))
 60860  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60861  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60862  	}{test_translate}))
 60863  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60864  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60865  	}{test_translate_selftest}))
 60866  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60867  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60868  	}{tcl_client_create}))
 60869  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60870  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60871  	}{tcl_client_wait}))
 60872  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60873  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60874  	}{tcl_client_halt}))
 60875  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60876  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60877  	}{tcl_client_argc}))
 60878  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60879  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60880  	}{tcl_client_argv}))
 60881  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60882  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60883  	}{tcl_client_colname}))
 60884  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60885  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60886  	}{tcl_client_result}))
 60887  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60888  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60889  	}{tcl_client_error}))
 60890  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60891  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60892  	}{tcl_client_compile}))
 60893  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60894  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60895  	}{tcl_client_step}))
 60896  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60897  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60898  	}{tcl_client_reset}))
 60899  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60900  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60901  	}{tcl_client_finalize}))
 60902  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60903  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60904  	}{tcl_client_swap}))
 60905  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 8)) = test_multiplex_initialize
 60906  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 24)) = test_multiplex_shutdown
 60907  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 40)) = test_multiplex_control
 60908  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60909  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60910  	}{test_shutdown}))
 60911  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60912  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60913  	}{test_initialize}))
 60914  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60915  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60916  	}{test_config}))
 60917  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60918  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60919  	}{test_enter_static_mutex}))
 60920  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60921  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60922  	}{test_leave_static_mutex}))
 60923  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60924  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60925  	}{test_enter_db_mutex}))
 60926  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60927  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60928  	}{test_leave_db_mutex}))
 60929  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60930  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60931  	}{test_alloc_mutex}))
 60932  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60933  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60934  	}{test_install_mutex_counters}))
 60935  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60936  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60937  	}{test_read_mutex_counters}))
 60938  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60939  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60940  	}{test_clear_mutex_counters}))
 60941  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 8)) = test_quota_initialize
 60942  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 24)) = test_quota_shutdown
 60943  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 40)) = test_quota_set
 60944  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 56)) = test_quota_file
 60945  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 72)) = test_quota_dump
 60946  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 88)) = test_quota_fopen
 60947  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 104)) = test_quota_fread
 60948  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 120)) = test_quota_fwrite
 60949  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 136)) = test_quota_fclose
 60950  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 152)) = test_quota_fflush
 60951  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 168)) = test_quota_fseek
 60952  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 184)) = test_quota_rewind
 60953  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 200)) = test_quota_ftell
 60954  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 216)) = test_quota_ftruncate
 60955  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 232)) = test_quota_file_size
 60956  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 248)) = test_quota_file_truesize
 60957  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 264)) = test_quota_file_mtime
 60958  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 280)) = test_quota_remove
 60959  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 296)) = test_quota_glob
 60960  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 312)) = test_quota_file_available
 60961  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 328)) = test_quota_ferror
 60962  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 8)) = sqlite3_amatch_init
 60963  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 24)) = sqlite3_appendvfs_init
 60964  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 40)) = sqlite3_carray_init
 60965  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 56)) = sqlite3_closure_init
 60966  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 72)) = sqlite3_csv_init
 60967  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 88)) = sqlite3_decimal_init
 60968  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 104)) = sqlite3_eval_init
 60969  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 120)) = sqlite3_explain_init
 60970  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 136)) = sqlite3_fileio_init
 60971  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 152)) = sqlite3_fuzzer_init
 60972  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 168)) = sqlite3_ieee_init
 60973  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 184)) = sqlite3_nextchar_init
 60974  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 200)) = sqlite3_percentile_init
 60975  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 216)) = sqlite3_prefixes_init
 60976  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 232)) = sqlite3_qpvtab_init
 60977  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 248)) = sqlite3_regexp_init
 60978  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 264)) = sqlite3_remember_init
 60979  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 280)) = sqlite3_series_init
 60980  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 296)) = sqlite3_spellfix_init
 60981  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 312)) = sqlite3_totype_init
 60982  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 328)) = sqlite3_unionvtab_init
 60983  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 344)) = sqlite3_wholenumber_init
 60984  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 16)) = decimalFunc
 60985  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 40)) = decimalCmpFunc
 60986  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 64)) = decimalAddFunc
 60987  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 88)) = decimalSubFunc
 60988  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 112)) = decimalMulFunc
 60989  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 16)) = ieee754func
 60990  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 40)) = ieee754func
 60991  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 64)) = ieee754func
 60992  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 88)) = ieee754func
 60993  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 112)) = ieee754func_to_blob
 60994  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 136)) = ieee754func_from_blob
 60995  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 16)) = randStr
 60996  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 40)) = test_destructor
 60997  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 64)) = test_destructor16
 60998  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 88)) = testHexToUtf16be
 60999  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 112)) = testHexToUtf16le
 61000  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 136)) = testHexToUtf8
 61001  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 160)) = test_destructor_count
 61002  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 184)) = test_auxdata
 61003  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 208)) = test_error
 61004  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 232)) = test_error
 61005  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 256)) = test_eval
 61006  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 280)) = test_isolation
 61007  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 304)) = counterFunc
 61008  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 328)) = real2hex
 61009  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 352)) = test_decode
 61010  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 376)) = test_extract
 61011  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 400)) = test_zeroblob
 61012  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 424)) = test_getsubtype
 61013  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 448)) = test_setsubtype
 61014  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 472)) = test_frombind
 61015  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 8)) = test_sqlite3rbu
 61016  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 24)) = test_sqlite3rbu_vacuum
 61017  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 40)) = test_sqlite3rbu_create_vfs
 61018  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 56)) = test_sqlite3rbu_destroy_vfs
 61019  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 72)) = test_sqlite3rbu_internal_test
 61020  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 8)) = test_sqlite3_db_config
 61021  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = test_sqlite3_txn_state
 61022  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 56)) = test_bad_behavior
 61023  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = uintptr(unsafe.Pointer(&iZero))
 61024  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 80)) = test_register_dbstat_vtab
 61025  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 104)) = get_sqlite_pointer
 61026  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 128)) = test_intarray_addr
 61027  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 152)) = test_int64array_addr
 61028  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 176)) = test_doublearray_addr
 61029  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 200)) = test_textarray_addr
 61030  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 224)) = test_bind_int
 61031  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 248)) = test_bind_zeroblob
 61032  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 272)) = test_bind_zeroblob64
 61033  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 296)) = test_bind_int64
 61034  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 320)) = test_bind_double
 61035  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 344)) = test_bind_null
 61036  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 368)) = test_bind_text
 61037  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 392)) = test_bind_text16
 61038  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 416)) = test_bind_blob
 61039  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 440)) = test_bind_value_from_select
 61040  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 464)) = test_bind_value_from_preupdate
 61041  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 488)) = test_carray_bind
 61042  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 512)) = test_bind_parameter_count
 61043  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 536)) = test_bind_parameter_name
 61044  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 560)) = test_bind_parameter_index
 61045  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 584)) = test_clear_bindings
 61046  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 608)) = test_sleep
 61047  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 632)) = test_errcode
 61048  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 656)) = test_ex_errcode
 61049  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 680)) = test_errmsg
 61050  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 704)) = test_error_offset
 61051  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 728)) = test_errmsg16
 61052  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 752)) = test_open
 61053  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 776)) = test_open16
 61054  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 800)) = test_open_v2
 61055  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 824)) = test_complete16
 61056  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 848)) = test_normalize
 61057  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 872)) = test_prepare
 61058  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 896)) = test_prepare16
 61059  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 920)) = test_prepare_v2
 61060  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 944)) = test_prepare_v3
 61061  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 968)) = test_prepare_tkt3134
 61062  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 992)) = test_prepare16_v2
 61063  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1016)) = test_finalize
 61064  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1040)) = test_stmt_status
 61065  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = test_reset
 61066  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = test_expired
 61067  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = test_transfer_bind
 61068  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = test_changes
 61069  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = test_step
 61070  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1184)) = test_sql
 61071  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = test_ex_sql
 61072  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = test_next_stmt
 61073  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1256)) = test_stmt_readonly
 61074  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1280)) = test_stmt_isexplain
 61075  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1304)) = test_stmt_busy
 61076  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1328)) = uses_stmt_journal
 61077  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1352)) = test_release_memory
 61078  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1376)) = test_db_release_memory
 61079  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1400)) = test_db_cacheflush
 61080  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1424)) = test_system_errno
 61081  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1448)) = test_db_filename
 61082  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1472)) = test_db_readonly
 61083  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1496)) = test_soft_heap_limit
 61084  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1520)) = test_soft_heap_limit
 61085  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1544)) = test_hard_heap_limit
 61086  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1568)) = test_thread_cleanup
 61087  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1592)) = test_pager_refcounts
 61088  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1616)) = test_load_extension
 61089  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1640)) = test_enable_load
 61090  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1664)) = test_extended_result_codes
 61091  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1688)) = test_limit
 61092  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1712)) = test_dbconfig_maindbname_icecube
 61093  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1736)) = save_prng_state
 61094  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1760)) = restore_prng_state
 61095  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1784)) = reset_prng_state
 61096  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1808)) = prng_seed
 61097  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1832)) = extra_schema_checks
 61098  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1856)) = database_never_corrupt
 61099  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1880)) = database_may_be_corrupt
 61100  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1904)) = optimization_control
 61101  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1928)) = runAsObjProc
 61102  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1952)) = test_column_count
 61103  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1976)) = test_data_count
 61104  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2000)) = test_column_type
 61105  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2024)) = test_column_blob
 61106  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2048)) = test_column_double
 61107  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2072)) = test_column_int64
 61108  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2096)) = test_stmt_utf8
 61109  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61110  		f func(*libc.TLS, uintptr, int32) uintptr
 61111  	}{sqlite3.Xsqlite3_column_text}))
 61112  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2120)) = test_stmt_utf8
 61113  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2128)) = *(*uintptr)(unsafe.Pointer(&struct {
 61114  		f func(*libc.TLS, uintptr, int32) uintptr
 61115  	}{sqlite3.Xsqlite3_column_name}))
 61116  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2144)) = test_stmt_int
 61117  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2152)) = *(*uintptr)(unsafe.Pointer(&struct {
 61118  		f func(*libc.TLS, uintptr, int32) int32
 61119  	}{sqlite3.Xsqlite3_column_int}))
 61120  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2168)) = test_stmt_int
 61121  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2176)) = *(*uintptr)(unsafe.Pointer(&struct {
 61122  		f func(*libc.TLS, uintptr, int32) int32
 61123  	}{sqlite3.Xsqlite3_column_bytes}))
 61124  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2192)) = test_stmt_utf8
 61125  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61126  		f func(*libc.TLS, uintptr, int32) uintptr
 61127  	}{sqlite3.Xsqlite3_column_decltype}))
 61128  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2216)) = test_stmt_utf8
 61129  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2224)) = *(*uintptr)(unsafe.Pointer(&struct {
 61130  		f func(*libc.TLS, uintptr, int32) uintptr
 61131  	}{sqlite3.Xsqlite3_column_database_name}))
 61132  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2240)) = test_stmt_utf8
 61133  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2248)) = *(*uintptr)(unsafe.Pointer(&struct {
 61134  		f func(*libc.TLS, uintptr, int32) uintptr
 61135  	}{sqlite3.Xsqlite3_column_table_name}))
 61136  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2264)) = test_stmt_utf8
 61137  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2272)) = *(*uintptr)(unsafe.Pointer(&struct {
 61138  		f func(*libc.TLS, uintptr, int32) uintptr
 61139  	}{sqlite3.Xsqlite3_column_origin_name}))
 61140  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2288)) = test_stmt_int
 61141  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2296)) = *(*uintptr)(unsafe.Pointer(&struct {
 61142  		f func(*libc.TLS, uintptr, int32) int32
 61143  	}{sqlite3.Xsqlite3_column_bytes16}))
 61144  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2312)) = test_stmt_utf16
 61145  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2320)) = *(*uintptr)(unsafe.Pointer(&struct {
 61146  		f func(*libc.TLS, uintptr, int32) uintptr
 61147  	}{sqlite3.Xsqlite3_column_text16}))
 61148  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2336)) = test_stmt_utf16
 61149  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2344)) = *(*uintptr)(unsafe.Pointer(&struct {
 61150  		f func(*libc.TLS, uintptr, int32) uintptr
 61151  	}{sqlite3.Xsqlite3_column_name16}))
 61152  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2360)) = add_alignment_test_collations
 61153  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2384)) = test_stmt_utf16
 61154  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2392)) = *(*uintptr)(unsafe.Pointer(&struct {
 61155  		f func(*libc.TLS, uintptr, int32) uintptr
 61156  	}{sqlite3.Xsqlite3_column_decltype16}))
 61157  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2408)) = test_stmt_utf16
 61158  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2416)) = *(*uintptr)(unsafe.Pointer(&struct {
 61159  		f func(*libc.TLS, uintptr, int32) uintptr
 61160  	}{sqlite3.Xsqlite3_column_database_name16}))
 61161  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2432)) = test_stmt_utf16
 61162  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2440)) = *(*uintptr)(unsafe.Pointer(&struct {
 61163  		f func(*libc.TLS, uintptr, int32) uintptr
 61164  	}{sqlite3.Xsqlite3_column_table_name16}))
 61165  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2456)) = test_stmt_utf16
 61166  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2464)) = *(*uintptr)(unsafe.Pointer(&struct {
 61167  		f func(*libc.TLS, uintptr, int32) uintptr
 61168  	}{sqlite3.Xsqlite3_column_origin_name16}))
 61169  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2480)) = test_create_collation_v2
 61170  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2504)) = test_global_recover
 61171  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2528)) = working_64bit_int
 61172  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2552)) = vfs_unlink_test
 61173  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2576)) = vfs_initfail_test
 61174  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2600)) = vfs_unregister_all
 61175  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2624)) = vfs_reregister_all
 61176  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2648)) = file_control_test
 61177  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2672)) = file_control_lasterrno_test
 61178  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2696)) = file_control_lockproxy_test
 61179  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2720)) = file_control_chunksize_test
 61180  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2744)) = file_control_sizehint_test
 61181  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2768)) = file_control_data_version
 61182  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2792)) = file_control_persist_wal
 61183  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2816)) = file_control_powersafe_overwrite
 61184  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2840)) = file_control_vfsname
 61185  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2864)) = file_control_reservebytes
 61186  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2888)) = file_control_tempfilename
 61187  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2912)) = file_control_external_reader
 61188  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2936)) = vfs_list
 61189  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2960)) = test_create_function_v2
 61190  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2984)) = test_collate
 61191  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3008)) = test_collate_needed
 61192  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3032)) = test_function
 61193  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3056)) = test_utf16bin_collate
 61194  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3080)) = test_errstr
 61195  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3104)) = tcl_variable_type
 61196  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3128)) = test_enable_shared
 61197  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3152)) = sqlite3BtreeSharedCacheReport
 61198  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3176)) = test_libversion_number
 61199  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3200)) = test_table_column_metadata
 61200  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3224)) = test_blob_reopen
 61201  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3248)) = test_pcache_stats
 61202  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3272)) = test_unlock_notify
 61203  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3296)) = test_wal_checkpoint
 61204  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3320)) = test_wal_checkpoint_v2
 61205  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3344)) = test_wal_autocheckpoint
 61206  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3368)) = test_sqlite3_log
 61207  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3392)) = test_print_eqp
 61208  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3416)) = test_test_control
 61209  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3440)) = test_getrusage
 61210  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3464)) = tclLoadStaticExtensionCmd
 61211  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3488)) = sorter_test_fakeheap
 61212  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3512)) = sorter_test_sort4_helper
 61213  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3536)) = vfsCurrentTimeInt64
 61214  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3560)) = test_snapshot_get
 61215  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3584)) = test_snapshot_open
 61216  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3608)) = test_snapshot_free
 61217  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3632)) = test_snapshot_cmp
 61218  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3656)) = test_snapshot_recover
 61219  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3680)) = test_snapshot_get_blob
 61220  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3704)) = test_snapshot_open_blob
 61221  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3728)) = test_snapshot_cmp_blob
 61222  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3752)) = test_delete_database
 61223  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3776)) = test_atomic_batch_write
 61224  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3800)) = test_mmap_warm
 61225  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3824)) = test_config_sorterref
 61226  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3848)) = test_autovacuum_pages
 61227  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3872)) = test_decode_hexdb
 61228  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3896)) = test_write_db
 61229  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3920)) = test_register_cksumvfs
 61230  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3944)) = test_unregister_cksumvfs
 61231  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 8)) = test_intarray_create
 61232  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 32)) = test_intarray_bind
 61233  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 8)) = test_malloc
 61234  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 32)) = test_realloc
 61235  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 56)) = test_free
 61236  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 80)) = test_memset
 61237  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 104)) = test_memget
 61238  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 128)) = test_memory_used
 61239  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 152)) = test_memory_highwater
 61240  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 176)) = test_memdebug_backtrace
 61241  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 200)) = test_memdebug_dump
 61242  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 224)) = test_memdebug_fail
 61243  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 248)) = test_memdebug_pending
 61244  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 272)) = test_memdebug_settitle
 61245  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 296)) = test_memdebug_malloc_count
 61246  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 320)) = test_memdebug_log
 61247  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 344)) = test_config_pagecache
 61248  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 368)) = test_alt_pcache
 61249  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 392)) = test_status
 61250  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 416)) = test_db_status
 61251  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 440)) = test_install_malloc_faultsim
 61252  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 464)) = test_config_heap
 61253  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 488)) = test_config_heap_size
 61254  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 512)) = test_config_memstatus
 61255  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 536)) = test_config_lookaside
 61256  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 560)) = test_config_error
 61257  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 584)) = test_config_uri
 61258  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 608)) = test_config_cis
 61259  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 632)) = test_config_pmasz
 61260  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 656)) = test_db_config_lookaside
 61261  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 680)) = test_dump_memsys3
 61262  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 704)) = test_dump_memsys3
 61263  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 728)) = test_install_memsys3
 61264  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 752)) = test_vfs_oom_test
 61265  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 8)) = register_schema_module
 61266  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 8)) = register_tclvar_module
 61267  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 8)) = test_create_window
 61268  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 32)) = test_create_window_misuse
 61269  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 56)) = test_create_sumint
 61270  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 80)) = test_override_sum
 61271  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 8)) = register_echo_module
 61272  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 32)) = declare_vtab
 61273  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 8)) = c_misuse_test
 61274  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 32)) = c_realloc_test
 61275  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 56)) = c_collation_test
 61276  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 8)) = register_tcl_module
 61277  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 8)) = test_blob_open
 61278  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 24)) = test_blob_close
 61279  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 40)) = test_blob_bytes
 61280  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 56)) = test_blob_read
 61281  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 72)) = test_blob_write
 61282  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 8)) = register_fs_module
 61283  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 8)) = autoinstall_test_funcs
 61284  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 24)) = abuse_create_function
 61285  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 40)) = install_fts3_rank_function
 61286  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 8)) = hexio_read
 61287  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 24)) = hexio_write
 61288  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 40)) = hexio_get_int
 61289  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 56)) = hexio_render_int16
 61290  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 72)) = hexio_render_int32
 61291  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 88)) = utf8_to_utf8
 61292  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 104)) = read_fts3varint
 61293  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 120)) = make_fts3record
 61294  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 8)) = init_wrapper_install
 61295  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 24)) = init_wrapper_query
 61296  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 40)) = init_wrapper_uninstall
 61297  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 56)) = init_wrapper_clear
 61298  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 61299  		f func(*libc.TLS, uintptr, int32, int32) int32
 61300  	}{ts_open}))
 61301  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 61302  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 61303  		f func(*libc.TLS, uintptr, int32) int32
 61304  	}{ts_access}))
 61305  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61306  		f func(*libc.TLS, uintptr, size_t) uintptr
 61307  	}{ts_getcwd}))
 61308  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 61309  		f func(*libc.TLS, uintptr, uintptr) int32
 61310  	}{ts_stat}))
 61311  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 61312  		f func(*libc.TLS, int32, uintptr) int32
 61313  	}{ts_fstat}))
 61314  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 61315  		f func(*libc.TLS, int32, off_t) int32
 61316  	}{ts_ftruncate}))
 61317  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 61318  		f func(*libc.TLS, int32, int32, uintptr) int32
 61319  	}{ts_fcntl}))
 61320  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 61321  		f func(*libc.TLS, int32, uintptr, size_t) int32
 61322  	}{ts_read}))
 61323  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 61324  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 61325  	}{ts_pread}))
 61326  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 61327  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 61328  	}{ts_pread64}))
 61329  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 61330  		f func(*libc.TLS, int32, uintptr, size_t) int32
 61331  	}{ts_write}))
 61332  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 61333  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 61334  	}{ts_pwrite}))
 61335  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 61336  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 61337  	}{ts_pwrite64}))
 61338  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 61339  		f func(*libc.TLS, int32, mode_t) int32
 61340  	}{ts_fchmod}))
 61341  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 61342  		f func(*libc.TLS, int32, off_t, off_t) int32
 61343  	}{ts_fallocate}))
 61344  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 61345  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 61346  	}{ts_mmap}))
 61347  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 61348  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 61349  	}{ts_mremap}))
 61350  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 61351  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchConnect
 61352  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchBestIndex
 61353  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchDisconnect
 61354  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchDisconnect
 61355  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchOpen
 61356  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 56)) = amatchClose
 61357  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 64)) = amatchFilter
 61358  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 72)) = amatchNext
 61359  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 80)) = amatchEof
 61360  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 88)) = amatchColumn
 61361  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 96)) = amatchRowid
 61362  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 104)) = amatchUpdate
 61363  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndClose
 61364  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndRead
 61365  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndWrite
 61366  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndTruncate
 61367  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndSync
 61368  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndFileSize
 61369  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndLock
 61370  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndUnlock
 61371  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndCheckReservedLock
 61372  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 80)) = apndFileControl
 61373  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 88)) = apndSectorSize
 61374  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 96)) = apndDeviceCharacteristics
 61375  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 104)) = apndShmMap
 61376  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 112)) = apndShmLock
 61377  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 120)) = apndShmBarrier
 61378  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 128)) = apndShmUnmap
 61379  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 136)) = apndFetch
 61380  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 144)) = apndUnfetch
 61381  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndOpen
 61382  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDelete
 61383  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndAccess
 61384  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndFullPathname
 61385  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndDlOpen
 61386  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndDlError
 61387  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 88)) = apndDlSym
 61388  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 96)) = apndDlClose
 61389  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 104)) = apndRandomness
 61390  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 112)) = apndSleep
 61391  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 120)) = apndCurrentTime
 61392  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 128)) = apndGetLastError
 61393  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 136)) = apndCurrentTimeInt64
 61394  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 144)) = apndSetSystemCall
 61395  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 152)) = apndGetSystemCall
 61396  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 160)) = apndNextSystemCall
 61397  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayConnect
 61398  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayBestIndex
 61399  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayDisconnect
 61400  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayOpen
 61401  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 56)) = carrayClose
 61402  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 64)) = carrayFilter
 61403  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 72)) = carrayNext
 61404  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 80)) = carrayEof
 61405  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 88)) = carrayColumn
 61406  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 96)) = carrayRowid
 61407  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmClose
 61408  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmRead
 61409  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmWrite
 61410  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmTruncate
 61411  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmSync
 61412  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmFileSize
 61413  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmLock
 61414  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmUnlock
 61415  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmCheckReservedLock
 61416  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 80)) = cksmFileControl
 61417  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 88)) = cksmSectorSize
 61418  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 96)) = cksmDeviceCharacteristics
 61419  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 104)) = cksmShmMap
 61420  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 112)) = cksmShmLock
 61421  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 120)) = cksmShmBarrier
 61422  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 128)) = cksmShmUnmap
 61423  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 136)) = cksmFetch
 61424  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 144)) = cksmUnfetch
 61425  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmOpen
 61426  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDelete
 61427  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmAccess
 61428  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmFullPathname
 61429  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmDlOpen
 61430  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmDlError
 61431  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 88)) = cksmDlSym
 61432  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 96)) = cksmDlClose
 61433  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 104)) = cksmRandomness
 61434  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 112)) = cksmSleep
 61435  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 120)) = cksmCurrentTime
 61436  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 128)) = cksmGetLastError
 61437  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 136)) = cksmCurrentTimeInt64
 61438  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 144)) = cksmSetSystemCall
 61439  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 152)) = cksmGetSystemCall
 61440  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 160)) = cksmNextSystemCall
 61441  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 61442  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureConnect
 61443  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureBestIndex
 61444  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureDisconnect
 61445  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureDisconnect
 61446  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureOpen
 61447  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 56)) = closureClose
 61448  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 64)) = closureFilter
 61449  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 72)) = closureNext
 61450  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 80)) = closureEof
 61451  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 88)) = closureColumn
 61452  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 96)) = closureRowid
 61453  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfOpen
 61454  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDelete
 61455  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfAccess
 61456  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfFullPathname
 61457  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 72)) = cfDlOpen
 61458  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 80)) = cfDlError
 61459  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 88)) = cfDlSym
 61460  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 96)) = cfDlClose
 61461  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 104)) = cfRandomness
 61462  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 112)) = cfSleep
 61463  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 120)) = cfCurrentTime
 61464  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 128)) = cfGetLastError
 61465  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymClose
 61466  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymRead
 61467  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymWrite
 61468  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymTruncate
 61469  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymSync
 61470  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymFileSize
 61471  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymLock
 61472  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymUnlock
 61473  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 72)) = devsymCheckReservedLock
 61474  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 80)) = devsymFileControl
 61475  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 88)) = devsymSectorSize
 61476  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 96)) = devsymDeviceCharacteristics
 61477  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 104)) = devsymShmMap
 61478  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 112)) = devsymShmLock
 61479  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 120)) = devsymShmBarrier
 61480  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 128)) = devsymShmUnmap
 61481  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 40)) = devsymOpen
 61482  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 48)) = devsymDelete
 61483  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymAccess
 61484  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymFullPathname
 61485  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 104)) = devsymRandomness
 61486  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 112)) = devsymSleep
 61487  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 120)) = devsymCurrentTime
 61488  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoCreate
 61489  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoConnect
 61490  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoBestIndex
 61491  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoDisconnect
 61492  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoDestroy
 61493  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoOpen
 61494  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoClose
 61495  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoFilter
 61496  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoNext
 61497  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 80)) = echoEof
 61498  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 88)) = echoColumn
 61499  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 96)) = echoRowid
 61500  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 104)) = echoUpdate
 61501  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 112)) = echoBegin
 61502  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 120)) = echoSync
 61503  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 128)) = echoCommit
 61504  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 136)) = echoRollback
 61505  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 144)) = echoFindFunction
 61506  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 152)) = echoRename
 61507  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoCreate
 61508  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoConnect
 61509  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoBestIndex
 61510  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoDisconnect
 61511  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoDestroy
 61512  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoOpen
 61513  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoClose
 61514  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoFilter
 61515  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoNext
 61516  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoEof
 61517  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoColumn
 61518  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 96)) = echoRowid
 61519  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 104)) = echoUpdate
 61520  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 112)) = echoBegin
 61521  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 120)) = echoSync
 61522  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 128)) = echoCommit
 61523  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 136)) = echoRollback
 61524  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 144)) = echoFindFunction
 61525  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 152)) = echoRename
 61526  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 160)) = echoSavepoint
 61527  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 168)) = echoRelease
 61528  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 176)) = echoRollbackTo
 61529  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 61530  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertConnect
 61531  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertBestIndex
 61532  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertDisconnect
 61533  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertDisconnect
 61534  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertOpen
 61535  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 56)) = expertClose
 61536  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 64)) = expertFilter
 61537  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 72)) = expertNext
 61538  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 80)) = expertEof
 61539  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 88)) = expertColumn
 61540  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 96)) = expertRowid
 61541  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 104)) = expertUpdate
 61542  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainConnect
 61543  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainBestIndex
 61544  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainDisconnect
 61545  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainOpen
 61546  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 56)) = explainClose
 61547  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 64)) = explainFilter
 61548  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 72)) = explainNext
 61549  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 80)) = explainEof
 61550  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 88)) = explainColumn
 61551  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 96)) = explainRowid
 61552  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 61553  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsConnect
 61554  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsBestIndex
 61555  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsDisconnect
 61556  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsDisconnect
 61557  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsOpen
 61558  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 56)) = fsClose
 61559  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 64)) = fsFilter
 61560  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 72)) = fsNext
 61561  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 80)) = fsEof
 61562  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 88)) = fsColumn
 61563  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 96)) = fsRowid
 61564  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsClose1
 61565  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsRead
 61566  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsWrite
 61567  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsTruncate
 61568  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsSync
 61569  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsFileSize
 61570  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 56)) = fsLock
 61571  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 64)) = fsUnlock
 61572  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 72)) = fsCheckReservedLock
 61573  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 80)) = fsFileControl
 61574  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 88)) = fsSectorSize
 61575  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 96)) = fsDeviceCharacteristics
 61576  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsOpen1
 61577  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDelete
 61578  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsAccess
 61579  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsFullPathname
 61580  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 72)) = fsDlOpen
 61581  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 80)) = fsDlError
 61582  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 88)) = fsDlSym
 61583  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 96)) = fsDlClose
 61584  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 104)) = fsRandomness
 61585  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 112)) = fsSleep
 61586  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 120)) = fsCurrentTime
 61587  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 61588  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirConnect1
 61589  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirBestIndex1
 61590  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirDisconnect1
 61591  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirDisconnect1
 61592  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirOpen1
 61593  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 56)) = fsdirClose1
 61594  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 64)) = fsdirFilter1
 61595  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 72)) = fsdirNext1
 61596  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 80)) = fsdirEof1
 61597  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 88)) = fsdirColumn1
 61598  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 96)) = fsdirRowid1
 61599  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirConnect
 61600  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirBestIndex
 61601  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirDisconnect
 61602  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirOpen
 61603  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 56)) = fsdirClose
 61604  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 64)) = fsdirFilter
 61605  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 72)) = fsdirNext
 61606  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 80)) = fsdirEof
 61607  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 88)) = fsdirColumn
 61608  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 96)) = fsdirRowid
 61609  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 61610  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeConnect
 61611  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeBestIndex
 61612  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeDisconnect
 61613  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeDisconnect
 61614  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeOpen
 61615  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 56)) = fstreeClose
 61616  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 64)) = fstreeFilter
 61617  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 72)) = fstreeNext
 61618  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 80)) = fstreeEof
 61619  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 88)) = fstreeColumn
 61620  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 96)) = fstreeRowid
 61621  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 61622  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokConnectMethod
 61623  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokBestIndexMethod
 61624  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokDisconnectMethod
 61625  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokDisconnectMethod
 61626  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokOpenMethod
 61627  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 56)) = fts5tokCloseMethod
 61628  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 64)) = fts5tokFilterMethod
 61629  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 72)) = fts5tokNextMethod
 61630  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 80)) = fts5tokEofMethod
 61631  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 88)) = fts5tokColumnMethod
 61632  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 96)) = fts5tokRowidMethod
 61633  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 61634  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerConnect
 61635  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerBestIndex
 61636  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerDisconnect
 61637  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerDisconnect
 61638  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerOpen
 61639  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 56)) = fuzzerClose
 61640  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 64)) = fuzzerFilter
 61641  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 72)) = fuzzerNext
 61642  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 80)) = fuzzerEof
 61643  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 88)) = fuzzerColumn
 61644  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 96)) = fuzzerRowid
 61645  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 61646  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayCreate
 61647  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayBestIndex
 61648  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayDestroy
 61649  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayDestroy
 61650  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayOpen
 61651  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 56)) = intarrayClose
 61652  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 64)) = intarrayFilter
 61653  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 72)) = intarrayNext
 61654  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 80)) = intarrayEof
 61655  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 88)) = intarrayColumn
 61656  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 96)) = intarrayRowid
 61657  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtClose
 61658  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtRead
 61659  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtWrite
 61660  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtTruncate
 61661  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtSync
 61662  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtFileSize
 61663  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 56)) = jtLock
 61664  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 64)) = jtUnlock
 61665  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 72)) = jtCheckReservedLock
 61666  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 80)) = jtFileControl
 61667  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 88)) = jtSectorSize
 61668  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 96)) = jtDeviceCharacteristics
 61669  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtOpen
 61670  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDelete
 61671  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtAccess
 61672  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtFullPathname
 61673  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtDlOpen
 61674  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 80)) = jtDlError
 61675  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 88)) = jtDlSym
 61676  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 96)) = jtDlClose
 61677  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 104)) = jtRandomness
 61678  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 112)) = jtSleep
 61679  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 120)) = jtCurrentTime
 61680  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 128)) = jtGetLastError
 61681  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 136)) = jtCurrentTimeInt64
 61682  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesConnect
 61683  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesBestIndex
 61684  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesDisconnect
 61685  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesOpen
 61686  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 56)) = prefixesClose
 61687  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 64)) = prefixesFilter
 61688  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 72)) = prefixesNext
 61689  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 80)) = prefixesEof
 61690  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 88)) = prefixesColumn
 61691  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 96)) = prefixesRowid
 61692  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 61693  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabConnect
 61694  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabBestIndex
 61695  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabDisconnect
 61696  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabOpen
 61697  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 56)) = qpvtabClose
 61698  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 64)) = qpvtabFilter
 61699  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 72)) = qpvtabNext
 61700  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 80)) = qpvtabEof
 61701  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 88)) = qpvtabColumn
 61702  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 96)) = qpvtabRowid
 61703  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 61704  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaCreate
 61705  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaBestIndex
 61706  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaDestroy
 61707  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaDestroy
 61708  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaOpen
 61709  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 56)) = schemaClose
 61710  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 64)) = schemaFilter
 61711  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 72)) = schemaNext
 61712  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 80)) = schemaEof
 61713  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 88)) = schemaColumn
 61714  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 96)) = schemaRowid
 61715  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesConnect
 61716  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesBestIndex
 61717  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesDisconnect
 61718  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesOpen
 61719  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 56)) = seriesClose
 61720  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 64)) = seriesFilter
 61721  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 72)) = seriesNext
 61722  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 80)) = seriesEof
 61723  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 88)) = seriesColumn
 61724  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 96)) = seriesRowid
 61725  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Create
 61726  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Connect
 61727  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1BestIndex
 61728  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Disconnect
 61729  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Destroy
 61730  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Open
 61731  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 56)) = spellfix1Close
 61732  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 64)) = spellfix1Filter
 61733  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 72)) = spellfix1Next
 61734  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 80)) = spellfix1Eof
 61735  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 88)) = spellfix1Column
 61736  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 96)) = spellfix1Rowid
 61737  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 104)) = spellfix1Update
 61738  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 152)) = spellfix1Rename
 61739  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 61740  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclConnect
 61741  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclBestIndex
 61742  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclDisconnect
 61743  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclDisconnect
 61744  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclOpen
 61745  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 56)) = tclClose
 61746  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 64)) = tclFilter
 61747  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 72)) = tclNext
 61748  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 80)) = tclEof
 61749  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 88)) = tclColumn
 61750  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 96)) = tclRowid
 61751  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 61752  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarConnect
 61753  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarBestIndex
 61754  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarDisconnect
 61755  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarDisconnect
 61756  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarOpen
 61757  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 56)) = tclvarClose
 61758  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 64)) = tclvarFilter
 61759  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 72)) = tclvarNext
 61760  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 80)) = tclvarEof
 61761  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 88)) = tclvarColumn
 61762  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 96)) = tclvarRowid
 61763  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 104)) = tclvarUpdate
 61764  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 61765  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheInit
 61766  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcacheShutdown
 61767  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheCreate
 61768  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheCachesize
 61769  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 48)) = testpcachePagecount
 61770  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 56)) = testpcacheFetch
 61771  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 64)) = testpcacheUnpin
 61772  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 72)) = testpcacheRekey
 61773  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 80)) = testpcacheTruncate
 61774  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 88)) = testpcacheDestroy
 61775  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpClose
 61776  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpRead
 61777  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpWrite
 61778  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpTruncate
 61779  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpSync
 61780  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpFileSize
 61781  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 56)) = tmpLock
 61782  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 64)) = tmpUnlock
 61783  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 72)) = tmpCheckReservedLock
 61784  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 80)) = tmpFileControl
 61785  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 88)) = tmpSectorSize
 61786  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 96)) = tmpDeviceCharacteristics
 61787  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsClose
 61788  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsRead
 61789  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsWrite
 61790  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsTruncate
 61791  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsSync
 61792  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsFileSize
 61793  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsLock
 61794  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsUnlock
 61795  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsCheckReservedLock
 61796  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 80)) = tvfsFileControl
 61797  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 88)) = tvfsSectorSize
 61798  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 96)) = tvfsDeviceCharacteristics
 61799  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 104)) = tvfsShmMap
 61800  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 112)) = tvfsShmLock
 61801  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 120)) = tvfsShmBarrier
 61802  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 128)) = tvfsShmUnmap
 61803  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 136)) = tvfsFetch
 61804  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 144)) = tvfsUnfetch
 61805  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 40)) = tvfsOpen
 61806  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 48)) = tvfsDelete
 61807  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsAccess
 61808  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsFullPathname
 61809  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 104)) = tvfsRandomness
 61810  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 112)) = tvfsSleep
 61811  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 120)) = tvfsCurrentTime
 61812  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 61813  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionConnect
 61814  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionBestIndex
 61815  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionDisconnect
 61816  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionDisconnect
 61817  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionOpen
 61818  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 56)) = unionClose
 61819  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 64)) = unionFilter
 61820  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 72)) = unionNext
 61821  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 80)) = unionEof
 61822  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 88)) = unionColumn
 61823  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 96)) = unionRowid
 61824  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogClose
 61825  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogRead
 61826  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogWrite
 61827  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogTruncate
 61828  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogSync
 61829  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogFileSize
 61830  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogLock
 61831  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogUnlock
 61832  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 72)) = vfslogCheckReservedLock
 61833  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 80)) = vfslogFileControl
 61834  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 88)) = vfslogSectorSize
 61835  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 96)) = vfslogDeviceCharacteristics
 61836  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 104)) = vfslogShmMap
 61837  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 112)) = vfslogShmLock
 61838  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 120)) = vfslogShmBarrier
 61839  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 128)) = vfslogShmUnmap
 61840  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 61841  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogConnect
 61842  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogBestIndex
 61843  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogDisconnect
 61844  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogDisconnect
 61845  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogOpen
 61846  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 56)) = vlogClose
 61847  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 64)) = vlogFilter
 61848  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 72)) = vlogNext
 61849  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 80)) = vlogEof
 61850  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 88)) = vlogColumn
 61851  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 96)) = vlogRowid
 61852  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogOpen
 61853  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDelete
 61854  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogAccess
 61855  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogFullPathname
 61856  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogDlOpen
 61857  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 80)) = vfslogDlError
 61858  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 88)) = vfslogDlSym
 61859  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 96)) = vfslogDlClose
 61860  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 104)) = vfslogRandomness
 61861  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 112)) = vfslogSleep
 61862  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 120)) = vfslogCurrentTime
 61863  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 128)) = vfslogGetLastError
 61864  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 136)) = vfslogCurrentTimeInt64
 61865  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 61866  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberConnect
 61867  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberBestIndex
 61868  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberDisconnect
 61869  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberDisconnect
 61870  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberOpen
 61871  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 56)) = wholenumberClose
 61872  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 64)) = wholenumberFilter
 61873  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 72)) = wholenumberNext
 61874  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 80)) = wholenumberEof
 61875  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 88)) = wholenumberColumn
 61876  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 96)) = wholenumberRowid
 61877  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymClose
 61878  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymRead
 61879  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = writecrashWrite
 61880  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymTruncate
 61881  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymSync
 61882  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = devsymFileSize
 61883  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymLock
 61884  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymUnlock
 61885  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 72)) = devsymCheckReservedLock
 61886  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 80)) = devsymFileControl
 61887  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 88)) = writecrashSectorSize
 61888  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 96)) = writecrashDeviceCharacteristics
 61889  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 104)) = devsymShmMap
 61890  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 112)) = devsymShmLock
 61891  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 120)) = devsymShmBarrier
 61892  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 128)) = devsymShmUnmap
 61893  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 40)) = writecrashOpen
 61894  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 48)) = devsymDelete
 61895  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymAccess
 61896  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymFullPathname
 61897  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 104)) = devsymRandomness
 61898  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 112)) = devsymSleep
 61899  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 120)) = devsymCurrentTime
 61900  }
 61901  
 61902  var ts1 = "%s\x00internal error!\x00SELECT * FROM main.%Q WHERE sample()\x00expert\x00PRAGMA table_xinfo=%Q\x00main\x00binary\x00, \x00%Q\x00 COLLATE %Q\x00 COLLATE %s\x00 DESC\x00PRAGMA index_list=%Q\x00PRAGMA index_xInfo=%Q\x00%s_idx_%08x\x00SELECT count(*) FROM sqlite_schema WHERE name=%Q AND type in ('index','table','view')\x00CREATE INDEX \"%w\" ON \"%w\"(%s)\x00CREATE INDEX %s ON %s(%s)\x00EXPLAIN QUERY PLAN %s\x00 USING INDEX \x00 USING COVERING INDEX \x00%s\n\x00%s;\n\x00SELECT 'CREATE TEMP' || substr(sql, 7) FROM sqlite_schema WHERE tbl_name = %Q AND type IN ('table', 'trigger') ORDER BY type;\x00ALTER TABLE temp.%Q RENAME TO %Q\x00INSERT INTO %Q VALUES(\x00%s?\x00\x00)\x00UPDATE %Q SET \x00%s%Q=?\x00DELETE FROM %Q\x00t592690916721053953805701627921227776\x00DROP TABLE t592690916721053953805701627921227776\x00SELECT type, name, sql, 1 FROM sqlite_schema WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%%'  UNION ALL SELECT type, name, sql, 2 FROM sqlite_schema WHERE type = 'trigger'  AND tbl_name IN(SELECT name FROM sqlite_schema WHERE type = 'view') ORDER BY 4, 1\x00CREATE TABLE x(\x00%s%Q COLLATE %s\x00CREATE VIRTUAL TABLE %Q USING expert(%Q)\x00SELECT max(i.seqno) FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l,   pragma_index_info(l.name) AS i WHERE s.type = 'table'\x00%sx.%Q IS rem(%d, x.%Q) COLLATE %s\x00%s%d\x00SELECT %s FROM %Q x ORDER BY %s\x00SELECT %s FROM temp.t592690916721053953805701627921227776 x ORDER BY %s\x00%d\x00 %d\x00DROP TABLE IF EXISTS temp.t592690916721053953805701627921227776\x00CREATE TABLE temp.t592690916721053953805701627921227776 AS SELECT * FROM %Q\x00SELECT s.rowid, s.name, l.name FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l WHERE s.type = 'table'\x00SELECT name, coll FROM pragma_index_xinfo(?) WHERE key\x00INSERT INTO sqlite_stat1 VALUES(?, ?, ?)\x00ANALYZE; PRAGMA writable_schema=1\x00rem\x00sample\x00ANALYZE sqlite_schema\x00:memory:\x00SELECT sql FROM sqlite_schema WHERE name NOT LIKE 'sqlite_%%' AND sql NOT LIKE 'CREATE VIRTUAL %%'\x00Cannot find a unique index name to propose.\x00%s;%s%s\n\x00 -- stat1: \x00no such handle: \x00sql\x00TABLE\x00analyze\x00count\x00report\x00STMT EREPORT\x00destroy\x00SUBCOMMAND ...\x00sub-command\x00indexes\x00plan\x00candidates\x00DB\x00sqlite3expert%d\x00out of memory\x00sqlite3_expert_new\x00SQLITE_DONE\x00SQLITE_ERROR\x00SQLITE_OK\x00SELECT fts5(?1)\x00error: \x00fts5_api_ptr\x00f5t_2_%lld\x00xColumnCount\x00xRowCount\x00xColumnTotalSize\x00COL\x00xTokenize\x00TEXT SCRIPT\x00xPhraseCount\x00xPhraseSize\x00PHRASE\x00xInstCount\x00xInst\x00IDX\x00xRowid\x00xColumnText\x00xColumnSize\x00xQueryPhrase\x00PHRASE SCRIPT\x00xSetAuxdata\x00VALUE\x00xGetAuxdata\x00CLEAR\x00xSetAuxdataInt\x00INTEGER\x00xGetAuxdataInt\x00xPhraseForeach\x00IPHRASE COLVAR OFFVAR SCRIPT\x00xPhraseColumnForeach\x00IPHRASE COLVAR SCRIPT\x00SUB-COMMAND\x00f5t_%lld\x00bytearray\x00boolean\x00double\x00wideInt\x00int\x00DB NAME SCRIPT\x00?-subst? DB NAME TEXT\x00-subst\x00unrecognized option: \x00no such tokenizer: \x00error in tokenizer.xCreate()\x00error in tokenizer.xTokenize()\x00document\x00aux\x00query\x00prefixquery\x00invalid\x00-colocated\x00sqlite3_fts5_token may only be used by tokenizer callback\x00?-colocated? TEXT START END\x00error in fts5_api.xCreateTokenizer()\x00NSLOT TOKEN\x00sqlite3_fts5_create_tokenizer\x00sqlite3_fts5_token\x00sqlite3_fts5_tokenize\x00sqlite3_fts5_create_function\x00sqlite3_fts5_may_be_corrupt\x00sqlite3_fts5_token_hash\x00sqlite3_fts5_register_matchinfo\x00sqlite3_fts5_register_fts5tokenize\x00unrecognized matchinfo flag: %c\x00pcx\x00matchinfo\x00CREATE TABLE x(input HIDDEN, token, start, end, position)\x00fts5tokenize\x00apndvfs\x00Start-Of-SQLite3-\x00apnd(%lld)/%z\x00SQLite format 3\x00%s: cost must be between 1 and %d\x00%s: maximum string length is %d\x00%s: iLang must be between 0 and %d\x00?\x00SELECT * FROM %Q.%Q\x00%s: %s\x00%s: %s has %d columns, expected 4\x00vocabulary_table\x00vocabulary_word\x00vocabulary_language\x00edit_distances\x00unrecognized argument: [%s]\n\x00no edit_distances table specified\x00CREATE TABLE x(word,distance,language,command HIDDEN,nword HIDDEN)\x000123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^abcdefghijklmnopqrstuvwxyz~\x00SELECT \"%w\" FROM \"%w\"\x00 WHERE \"%w\">=?1 AND \"%w\"=?2 ORDER BY 1\x00SELECT \"%w\" FROM \"%w\" WHERE \"%w\">=?1 ORDER BY 1\x00*\x00DELETE from %s is not allowed\x00UPDATE of %s is not allowed\x00INSERT INTO %s allowed for column [command] only\x00approximate_match\x00int32\x00int64\x00char*\x00CREATE TABLE x(value,pointer hidden,count hidden,ctype hidden)\x00carray-bind\x00carray\x00unknown datatype: %Q\x00inttoptr\x00cksmvfs\x00ZV-\x00checksum fault offset %lld of \"%s\"\x00checksum_verification\x00enable%\x00yes\x00on\x00page_size\x00cksm/%z\x00verify_checksum\x00tablename\x00idcolumn\x00parentcolumn\x00CREATE TABLE x(id,depth,root HIDDEN,tablename HIDDEN,idcolumn HIDDEN,parentcolumn HIDDEN)\x00SELECT \"%w\".\"%w\" FROM \"%w\" WHERE \"%w\".\"%w\"=?1\x00transitive_closure\x00rb\x00cannot open '%s' for reading\x00line %d: unescaped %c character\x00line %d: unterminated %c-quoted field\n\x00more than one '%s' parameter\x00true\x00no\x00off\x00false\x00header\x00more than one 'header' parameter\x00testflags\x00columns\x00more than one 'columns' parameter\x00column= value must be positive\x00bad parameter: '%s'\x00must specify either filename= or data= but not both\x00%sc%d TEXT\x00,\x00%s\"%w\" TEXT\x00bad schema: '%s' - %s\x00filename\x00data\x00schema\x00csv\x00csv_wr\x00decimal_sum\x00decimal\x00decimal_cmp\x00decimal_add\x00decimal_sub\x00decimal_mul\x00 \x00eval\x00CREATE TABLE x(addr,opcode,p1,p2,p3,p4,p5,comment,sql HIDDEN)\x00EXPLAIN %s\x00explain\x00wb\x00wrong number of arguments to function writefile()\x00failed to create symlink: %s\x00failed to create directory: %s\x00failed to write file: %s\x00CREATE TABLE x(name,mode,mtime,data,path HIDDEN,dir HIDDEN)\x00cannot read directory: %s\x00%s/%s\x00cannot stat file: %s\x00table function fsdir requires an argument\x00table function fsdir requires a non-NULL argument\x00fsdir\x00readfile\x00writefile\x00lsmode\x00%s: ruleset must be between 0 and %d\x00%s: wrong number of CREATE VIRTUAL TABLE arguments\x00CREATE TABLE x(word,distance,ruleset)\x00fuzzer\x00ieee754(%lld,%d)\x00ieee754\x00ieee754_mantissa\x00ieee754_exponent\x00ieee754_to_blob\x00ieee754_from_blob\x00BEGIN; SELECT * FROM %s%q%ssqlite_schema\x00'\x00'.\x00PRAGMA %s%q%spage_size\x00sqlite3_mmap_warm_cache: Warmed up %d pages of %s\x00END\x00AND (%s)\x00collate \"%w\"\x00SELECT %s FROM %s WHERE %s>=(?1 || ?2) %s   AND %s<=(?1 || char(1114111)) %s   %s ORDER BY 1 %s ASC LIMIT 1\x00next_char\x00NULL\x00is\x00not\x00in(\x00in(select\x00in(with\x00?,?,?\x002nd argument to percentile() is not a number between 0.0 and 100.0\x002nd argument to percentile() is not the same for all input rows\x001st argument to percentile() is not numeric\x00Inf input to percentile()\x00percentile\x00CREATE TABLE prefixes(prefix TEXT, original_string TEXT HIDDEN)\x00prefixes\x00prefix_length\x00vn\x00ix\x00cn\x00op\x00ux\x00rhs\x00a\x00b\x00c\x00d\x00e\x00flags\x00CREATE TABLE x( vn TEXT, ix INT, cn TEXT, op INT, ux BOOLEAN, rhs TEXT, a, b, c, d, e, flags INT HIDDEN)\x00%lld\x00%!f\x00x'\x00%02x\x00nConstraint,%d,,,,\n\x00aConstraint,%d,%s,%d,%d,\x00\n\x00nOrderBy,%d,,,,\n\x00aOrderBy,%d,%s,%d,,\n\x00rowid\x00sqlite3_vtab_distinct,%d,,,,\n\x00idxFlags,%d,,,,\n\x00colUsed,%d,,,,\n\x00idxNum,%d,,,,\n\x00orderByConsumed,%d,,,,\n\x00qpvtab\x00unknown \\ escape\x00afnrtv\\()*.+?[$^{|}]\x00\a\f\n\r\t\v\x00unmatched '('\x00'*' without operand\x00'+' without operand\x00'?' without operand\x00'{m,n}' without operand\x00unmatched '{'\x00n less than m in '{m,n}'\x00both m and n are zero in '{m,n}'\x00POSIX character classes not supported\x00unclosed '['\x00unrecognized character\x00regexp\x00regexpi\x00remember\x00CREATE TABLE x(value,start hidden,stop hidden,step hidden)\x00first argument to \"generate_series()\" missing or unusable\x00generate_series() requires SQLite 3.8.12 or later\x00generate_series\x00.ABCDHLRMY9 ?\x00non-ASCII input to editdist()\x00NULL input to editdist()\x00SELECT iLang, cFrom, cTo, iCost FROM \"%w\" WHERE iLang>=0 ORDER BY iLang\x00editdist3\x00DROP TABLE IF EXISTS \"%w\".\"%w_vocab\"\x00CREATE TABLE x(word,rank,distance,langid, score, matchlen, phonehash HIDDEN, top HIDDEN, scope HIDDEN, srchcnt HIDDEN, soundslike HIDDEN, command HIDDEN)\x00CREATE TABLE IF NOT EXISTS \"%w\".\"%w_vocab\"(\n  id INTEGER PRIMARY KEY,\n  rank INT,\n  langid INT,\n  word TEXT,\n  k1 TEXT,\n  k2 TEXT\n);\n\x00CREATE INDEX IF NOT EXISTS \"%w\".\"%w_vocab_index_langid_k2\" ON \"%w_vocab\"(langid,k2);\x00edit_cost_table=\x00bad argument to spellfix1(): \"%s\"\x00SELECT id, word, rank, coalesce(k1,word)  FROM \"%w\".\"%w_vocab\" WHERE langid=%d AND k2>=?1 AND k2<?2\x00SELECT word, rank, NULL, langid, id FROM \"%w\".\"%w_vocab\"%s\x00 WHERE rowid=?\x00ROLLBACK\x00IGNORE\x00ABORT\x00REPLACE\x00DELETE FROM \"%w\".\"%w_vocab\"  WHERE id=%lld\x00NOT NULL constraint failed: %s.word\x00reset\x00null\x00unknown value for %s.command: \"%w\"\x00INSERT INTO \"%w\".\"%w_vocab\"(rank,langid,word,k1,k2) VALUES(%d,%d,%Q,nullif(%Q,%Q),%Q)\x00INSERT OR %s INTO \"%w\".\"%w_vocab\"(id,rank,langid,word,k1,k2) VALUES(%lld,%d,%d,%Q,nullif(%Q,%Q),%Q)\x00UPDATE OR %s \"%w\".\"%w_vocab\" SET id=%lld, rank=%d, langid=%d, word=%Q, k1=nullif(%Q,%Q), k2=%Q WHERE id=%lld\x00ALTER TABLE \"%w\".\"%w_vocab\" RENAME TO \"%w_vocab\"\x00spellfix1_translit\x00spellfix1_editdist\x00spellfix1_phonehash\x00spellfix1_scriptcode\x00spellfix1\x00922337203685477580\x00tointeger\x00toreal\x00sql error: %s\x00_rowid_\x00integer\x00no such rowid table: %s%s%s\x00.\x00SELECT group_concat(quote(name) || '.' || quote(type)) FROM pragma_table_info(?, ?)\x00source table schema mismatch\x00swarmvtab: no such SQL parameter: %s\x00maxopen\x00swarmvtab: illegal maxopen value\x00missing\x00swarmvtab: duplicate \"missing\" option\x00SELECT \"%w\"(?%s)\x00,?\x00openclose\x00swarmvtab: duplicate \"openclose\" option\x00SELECT \"%w\"(?,?%s)\x00swarmvtab: unrecognized option: %s\x00SELECT \"%w\"(?)\x00swarmvtab: parse error: %s\x00swarmvtab\x00unionvtab\x00temp\x00%s tables must be created in TEMP schema\x00wrong number of arguments for %s\x00SELECT * FROM (%z) ORDER BY 3\x00rowid range mismatch error\x00no source tables configured\x00SELECT 'CREATE TABLE xyz('    || group_concat(quote(name) || ' ' || type, ', ')    || ')',max((cid+1) * (type='INTEGER' COLLATE nocase AND pk=1))-1 FROM pragma_table_info(%Q, ?)\x00SELECT rowid, * FROM %Q %s %lld\x00WHERE _rowid_ <=\x00-- \x00%z%sSELECT rowid, * FROM %s%q%s%Q\x00 UNION ALL \x00%z WHERE rowid=%lld\x00WHERE\x00%z WHERE rowid>=%lld\x00AND\x00%z %s rowid<=%lld\x00CREATE TABLE x(value)\x00wholenumber\x00rbu_delta\x00step\x00close\x00create_rbu_delta\x00savestate\x00dbMain_eval\x00SQL\x00bp_progress\x00db\x00RBU\x00state\x00progress\x00close_no_error\x00temp_size_limit\x00LIMIT\x00temp_size\x00dbRbu_eval\x00METHOD\x00method\x00 - \x00oal\x00move\x00checkpoint\x00done\x00error\x00NAME TARGET-DB RBU-DB ?STATE-DB?\x00NAME TARGET-DB ?STATE-DB?\x00?-default? NAME PARENT\x00NAME\x00sqlite3rbu_db(0, 0)!=0\x00sqlite3rbu\x00sqlite3rbu_vacuum\x00sqlite3rbu_create_vfs\x00sqlite3rbu_destroy_vfs\x00sqlite3rbu_internal_test\x00%p\x00zero\x00user\x00user_is_zero\x00box\x00DB SCRIPT\x00partly\x00fully\x00aParam\x00aCoord\x00anQueue\x00iLevel\x00mxLevel\x00iRowid\x00rParentScore\x00eParentWithin\x00value\x00qbox\x00register_box_geom\x00register_box_query\x00DB SQL\x00error in sql_exec_changeset()\x00sqlite3session_streams\x00attach\x00changeset\x00delete\x00enable\x00BOOL\x00indirect\x00isempty\x00table_filter\x00SCRIPT\x00patchset\x00diff\x00FROMDB TBL\x00memory_used\x00changeset_size\x00object_config_size\x00CMD DB-HANDLE DB-NAME\x00n\x00i\x00f\x00t\x00FOREIGN_KEY\x00INSERT\x00UPDATE\x00DELETE\x00DATA\x00NOTFOUND\x00CONFLICT\x00CONSTRAINT\x00OMIT\x00-nosavepoint\x00-invert\x00?-nosavepoint? ?-inverse? DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET\x00CHANGESET\x00LEFT RIGHT\x00-next\x00?-next? ?-invert? VARNAME CHANGESET SCRIPT\x00configure\x00REBASE-BLOB\x00rebase\x00OP VALUE\x00strm_size\x00sqlite3session\x00sqlite3session_foreach\x00sqlite3changeset_invert\x00sqlite3changeset_concat\x00sqlite3changeset_apply\x00sqlite3changeset_apply_v2\x00sqlite3changeset_apply_replace_all\x00sql_exec_changeset\x00sqlite3rebaser_create\x00sqlite3session_config\x00incrblob\x00incrblob_%d\x00sqlite_unlock_notify_arg\x00sqlite_unlock_notify_argcount\x00SQLITE_COPY\x00SQLITE_CREATE_INDEX\x00SQLITE_CREATE_TABLE\x00SQLITE_CREATE_TEMP_INDEX\x00SQLITE_CREATE_TEMP_TABLE\x00SQLITE_CREATE_TEMP_TRIGGER\x00SQLITE_CREATE_TEMP_VIEW\x00SQLITE_CREATE_TRIGGER\x00SQLITE_CREATE_VIEW\x00SQLITE_DELETE\x00SQLITE_DROP_INDEX\x00SQLITE_DROP_TABLE\x00SQLITE_DROP_TEMP_INDEX\x00SQLITE_DROP_TEMP_TABLE\x00SQLITE_DROP_TEMP_TRIGGER\x00SQLITE_DROP_TEMP_VIEW\x00SQLITE_DROP_TRIGGER\x00SQLITE_DROP_VIEW\x00SQLITE_INSERT\x00SQLITE_PRAGMA\x00SQLITE_READ\x00SQLITE_SELECT\x00SQLITE_TRANSACTION\x00SQLITE_UPDATE\x00SQLITE_ATTACH\x00SQLITE_DETACH\x00SQLITE_ALTER_TABLE\x00SQLITE_REINDEX\x00SQLITE_ANALYZE\x00SQLITE_CREATE_VTABLE\x00SQLITE_DROP_VTABLE\x00SQLITE_FUNCTION\x00SQLITE_SAVEPOINT\x00SQLITE_RECURSIVE\x00????\x00SQLITE_DENY\x00SQLITE_IGNORE\x00RELEASE _tcl_transaction\x00COMMIT\x00ROLLBACK TO _tcl_transaction ; RELEASE _tcl_transaction\x00option\x00?CALLBACK?\x00?DATABASE? FILENAME\x00cannot open target database: \x00backup failed: \x00CALLBACK\x00cache option ?arg?\x00flush\x00size\x00size n\x00cannot convert \"\x00\" to integer\x00bad option \"\x00\": must be flush or size\x00NAME SCRIPT\x00?OPTION? ?BOOLEAN?\x00unknown config option: \"\x00\"\x00CONFLICT-ALGORITHM TABLE FILENAME ?SEPARATOR? ?NULLINDICATOR?\x00\t\x00Error: non-null separator required for copy\x00rollback\x00abort\x00fail\x00ignore\x00replace\x00Error: \"\x00\", conflict-algorithm must be one of: rollback, abort, fail, ignore, or replace\x00SELECT * FROM '%q'\x00Error: no such table: \x00Error: \x00Error: can't malloc()\x00INSERT OR %q INTO '%q' VALUES(?\x00Error: cannot open file: \x00BEGIN\x00Error: %s line %d: expected %d columns of data but found %d\x00, failed while processing line: \x00?DATABASE? VALUE\x00-maxsize\x00-readonly\x00unknown option: \x00unable to set MEMDB content\x00extension loading is turned off at compile-time\x00-withoutnulls\x00unknown option: \"\x00?OPTIONS? SQL ?ARRAY-NAME? ?SCRIPT?\x00NAME ?SWITCHES? SCRIPT\x00-argcount\x00option requires an argument: \x00number of arguments must be non-negative\x00-deterministic\x00-directonly\x00-innocuous\x00-returntype\x00real\x00text\x00blob\x00any\x00type\x00\": must be -argcount, -deterministic, -directonly, -innocuous, or -returntype\x00?-readonly? ?DB? TABLE COLUMN ROWID\x00NULLVALUE\x00N CALLBACK\x00KEY\x00cannot open source database: \x00restore failed: \x00restore failed: source database busy\x00?DATABASE?\x00(step|sort|autoindex)\x00sort\x00autoindex\x00vmstep\x00bad argument: should be autoindex, step, sort or vmstep\x00MILLISECONDS\x00?CALLBACK? ?MASK?\x00trace type\x00SAVEPOINT _tcl_transaction\x00[TYPE] SCRIPT\x00transaction type\x00BEGIN EXCLUSIVE\x00BEGIN IMMEDIATE\x00?SCRIPT?\x00SUB-COMMAND ?ARGS?\x00hook ?SCRIPT?\x00INDEX\x00-use-legacy-prepare\x00-last-stmt-ptr\x00unknown argument: \x00authorizer\x00backup\x00bind_fallback\x00busy\x00cache\x00changes\x00collate\x00collation_needed\x00commit_hook\x00complete\x00config\x00copy\x00deserialize\x00enable_load_extension\x00errorcode\x00erroroffset\x00exists\x00function\x00interrupt\x00last_insert_rowid\x00nullvalue\x00onecolumn\x00preupdate\x00profile\x00rekey\x00restore\x00rollback_hook\x00serialize\x00status\x00timeout\x00total_changes\x00trace\x00trace_v2\x00transaction\x00unlock_notify\x00update_hook\x00version\x00wal_hook\x00defensive\x00dqs_ddl\x00dqs_dml\x00enable_fkey\x00enable_qpsg\x00enable_trigger\x00enable_view\x00fts3_tokenizer\x00legacy_alter_table\x00legacy_file_format\x00load_extension\x00no_ckpt_on_close\x00reset_database\x00trigger_eqp\x00trusted_schema\x00writable_schema\x00statement\x00row\x00deferred\x00exclusive\x00immediate\x00depth\x00hook\x00new\x00old\x00HANDLE ?FILENAME? ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN? ?-nofollow BOOLEAN? ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN? ?-uri BOOLEAN?\x00-version\x00-sourceid\x00-has-codec\x000\x00-key\x00-vfs\x00-create\x00-nofollow\x00-nomutex\x00-fullmutex\x00-uri\x00-translatefilename\x00sqlite3\x00sqlite\x003.39.3\x00if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewline \"% \"\n}\nflush stdout\nappend line [gets stdin]\nif {[info complete $line]} {\nif {[catch {uplevel #0 $line} result]} {\nputs stderr \"Error: $result\"\n} elseif {$result!=\"\"} {\nputs $result\n}\nset line {}\n} else {\nappend line \\n\n}\n}\n}\n\x00SQLITE_DEBUG_BREAK\x00attach debugger to process %d and press any key to continue.\n\x00utf-8\x00argc\x00argv0\x00argv\x00errorInfo\x00%s: %s\n\x00SQLITE-CONNECTION\x00command not found: \x00error code %s (%d) does not match sqlite3_errcode %s (%d)\x00OMIT_MISUSE\x00wrong # args: should be \"\x00 DB FORMAT STRING\x00 DB HEX\x00 DB\x00 DB SQL\x00%z%s%s\x00%s%n\x00abcdefghijklmnopqrstuvwxyz\x00 DB FORMAT STRING ?COUNT?\x00 DB\"\x00 FILENAME\"\x00%04x\x00tkt2213 is not fixed\x00text16\x00bytes\x00bytes16\x00noop\x00x_coalesce\x00hex8\x00hex16\x00tkt2213func\x00pointer_change\x00counter1\x00counter2\x00intreal\x00x_sqlite_exec\x00value of 40 handed to x_count\x00x_count totals to 42\x00x_count\x00legacy_count\x00 TEXT\"\x00 FORMAT INT INT INT\"\x00argument is not a valid 64-bit integer\x00 FORMAT INT INT ?STRING?\"\x00 INT FORMAT INT INT ?STRING?\"\x00N must be non-negative\x00 FORMAT INT INT DOUBLE\"\x00 FORMAT DOUBLE DOUBLE\"\x00 FORMAT STRING\"\x00%08x%08x\x002nd argument should be 16-characters of hex\x00?BOOLEAN?\x00DB BOOLEAN\x00DB dbname tblname colname\x00CHANNEL ROWID\x00DB-HANDLE NAME CMP-PROC DEL-PROC\x00sqlite3_create_collate_v2() failed to detect an invalid encoding\x00utf8\x00utf16\x00utf16le\x00utf16be\x00DB NAME NARG ENC SWITCHES...\x00encoding\x00-func\x00-step\x00-final\x00-destroy\x00switch\x00DB-HANDLE FILE ?PROC?\x00this build omits sqlite3_load_extension()\x00DB-HANDLE ONOFF\x00string\x00first argument should be one of: int int64 string double null value\x00 DB FUNCTION-NAME\x00 <STMT>\x00STMT PARAMETER RESETFLAG\x00SQLITE_STMTSTATUS_FULLSCAN_STEP\x00SQLITE_STMTSTATUS_SORT\x00SQLITE_STMTSTATUS_AUTOINDEX\x00SQLITE_STMTSTATUS_VM_STEP\x00SQLITE_STMTSTATUS_REPREPARE\x00SQLITE_STMTSTATUS_RUN\x00SQLITE_STMTSTATUS_MEMUSED\x00NBYTE\x00DB DBNAME\x00DB DBNAME SNAPSHOT\x00SNAPSHOT\x00SNAPSHOT1 SNAPSHOT2\x00bad SNAPSHOT\x00FILE\x00PATH\x00 DB STMT\x00 STMT\x00 FROM-STMT TO-STMT\x00 VM IDX VALUE (null|static|normal)\"\x00static\x00static-nbytes\x00normal\x00blob10\x00abc\x00xyz\x00pq\x004th argument should be \"null\" or \"static\" or \"normal\"\x00(%d) \x00test_collate\x00UTF-8\x00UTF-16LE\x00UTF-16BE\x00 <DB> <utf8> <utf16le> <utf16be>\x00utf16bin\x00utf16_unaligned\x00utf16_aligned\x00test_function\x00<error code>\x00STMT IDX N\x00 STMT N VALUE\x00NaN\x00SNaN\x00-NaN\x00-SNaN\x00+Inf\x00-Inf\x00Epsilon\x00-Epsilon\x00NaN0\x00-NaN0\x00 STMT N\x00 STMT N VALUE BYTES\x00 STMT N DATA BYTES\x00cannot use %d blob bytes, have %d\x00STMT N NEW|OLD IDX\x00expected new or old, got: \x00STMT N SELECT\x00error in SQL: \x00error runnning SQL: \x00-transient\x00-static\x00-int32\x00-int64\x00-double\x00-text\x00--\x00text data must be either -static or -transient\x00cannot be both -static and -transient\x00[OPTIONS] STMT IDX VALUE ...\x00STMT\x00STMT N\x00STMT NAME\x00 DB sql bytes ?tailvar?\x00 DB sql bytes tailvar\x00 DB sql bytes flags tailvar\x00\x00SELECT 1\x00 filename options-list\x00FILENAME FLAGS VFS\x00SQLITE_OPEN_READONLY\x00SQLITE_OPEN_READWRITE\x00SQLITE_OPEN_CREATE\x00SQLITE_OPEN_DELETEONCLOSE\x00SQLITE_OPEN_EXCLUSIVE\x00SQLITE_OPEN_AUTOPROXY\x00SQLITE_OPEN_MAIN_DB\x00SQLITE_OPEN_TEMP_DB\x00SQLITE_OPEN_TRANSIENT_DB\x00SQLITE_OPEN_MAIN_JOURNAL\x00SQLITE_OPEN_TEMP_JOURNAL\x00SQLITE_OPEN_SUBJOURNAL\x00SQLITE_OPEN_SUPER_JOURNAL\x00SQLITE_OPEN_NOMUTEX\x00SQLITE_OPEN_FULLMUTEX\x00SQLITE_OPEN_SHAREDCACHE\x00SQLITE_OPEN_PRIVATECACHE\x00SQLITE_OPEN_WAL\x00SQLITE_OPEN_URI\x00SQLITE_OPEN_EXRESCODE\x00flag\x00<utf-16 sql>\x00 STMT column\x00FLOAT\x00TEXT\x00BLOB\x00 DB function-name\x00VARIABLE\x00?N?\x001234567890000000\x00__one\x00__two\x00notadatabase\x00Unexpected non-zero errno: \x00DB [DBNAME]\x00%u\x00DB DBNAME SIZE\x00 DB PWD\x00 DB FLAG\x00%d %d\x00 DB ?AUXDB?\x00DB N\x00 DB ID VALUE\x00unknown limit type: \x00SQLITE_LIMIT_LENGTH\x00SQLITE_LIMIT_SQL_LENGTH\x00SQLITE_LIMIT_COLUMN\x00SQLITE_LIMIT_EXPR_DEPTH\x00SQLITE_LIMIT_COMPOUND_SELECT\x00SQLITE_LIMIT_VDBE_OP\x00SQLITE_LIMIT_FUNCTION_ARG\x00SQLITE_LIMIT_ATTACHED\x00SQLITE_LIMIT_LIKE_PATTERN_LENGTH\x00SQLITE_LIMIT_VARIABLE_NUMBER\x00SQLITE_LIMIT_TRIGGER_DEPTH\x00SQLITE_LIMIT_WORKER_THREADS\x00SQLITE_LIMIT_TOOSMALL\x00SQLITE_LIMIT_TOOBIG\x00SEED ?DB?\x00BOOLEAN\x00current\x00max\x00min\x00recyclable\x00DB ?NAME?\x00passive\x00full\x00restart\x00truncate\x00DB MODE ?NAME?\x00mode\x00DB VALUE\x00COMMAND ...\x00command has no objProc: \x00%d %d %d %s\n\x00SQLITE_TESTCTRL_LOCALTIME_FAULT\x00SQLITE_TESTCTRL_SORTER_MMAP\x00SQLITE_TESTCTRL_IMPOSTER\x00SQLITE_TESTCTRL_INTERNAL_FUNCTIONS\x00VERB ARGS...\x00VERB\x000|1|2\x00DB LIMIT\x00DB dbName onOff tnum\x00ru_utime=%d.%06d ru_stime=%d.%06d ru_minflt=%d ru_majflt=%d\x00DB OPT BOOLEAN\x00unknown optimization - should be one of:\x00all\x00none\x00query-flattener\x00groupby-order\x00factor-constants\x00distinct-opt\x00cover-idx-scan\x00order-by-idx-join\x00transitive\x00omit-noop-join\x00stat4\x00skip-scan\x00push-down\x00balanced-merge\x00DB NAME ...\x00no such extension: \x00initialization of \x00 failed: \x00amatch\x00appendvfs\x00closure\x00fileio\x00nextchar\x00series\x00spellfix\x00totype\x00DB SQL1 NSTEP SQL2\x00data error: (a!=b)\x00checksum mismatch\x00sql error: \x00TYPE\x00Deliberate panic\x00DB SETTING [VALUE]\x00SQLITE_*\x00DBCONFIG_*\x00ENABLE_*\x00unknown sqlite3_db_config setting\x00FKEY\x00TRIGGER\x00FTS3_TOKENIZER\x00LOAD_EXTENSION\x00NO_CKPT_ON_CLOSE\x00QPSG\x00TRIGGER_EQP\x00RESET_DB\x00DEFENSIVE\x00WRITABLE_SCHEMA\x00LEGACY_ALTER_TABLE\x00DQS_DML\x00DQS_DDL\x00LEGACY_FILE_FORMAT\x00DB ?SCHEMA?\x00icecube\x00DB ?DBNAME?\x00DB OFFSET DATA\x00HEXDB\x00| size %d pagesize %d\x00bad 'pagesize' field\x00bad 'size' field\x00| page %d offset %d\x00| %d: %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x\x00DB ?SCRIPT?\x00sqlite3_autovacuum_pages() returns %d\x00sqlite_search_count\x00sqlite_found_count\x00sqlite_sort_count\x00sqlite3_max_blobsize\x00sqlite_like_count\x00sqlite_interrupt_count\x00sqlite_open_file_count\x00sqlite_current_time\x00sqlite3_xferopt_count\x00sqlite3_pager_readdb_count\x00sqlite3_pager_writedb_count\x00sqlite3_pager_writej_count\x00unaligned_string_counter\x00sqlite_last_needed_collation\x00sqlite_query_plan\x00sqlite_opentemp_count\x00sqlite_static_bind_value\x00sqlite_static_bind_nbyte\x00sqlite_temp_directory\x00sqlite_data_directory\x00bitmask_size\x00longdouble_size\x00sqlite_sync_count\x00sqlite_fullsync_count\x00db_enter\x00db_leave\x00sqlite3_mprintf_int\x00sqlite3_mprintf_int64\x00sqlite3_mprintf_long\x00sqlite3_mprintf_str\x00sqlite3_snprintf_str\x00sqlite3_mprintf_stronly\x00sqlite3_mprintf_double\x00sqlite3_mprintf_scaled\x00sqlite3_mprintf_hexdouble\x00sqlite3_mprintf_z_test\x00sqlite3_mprintf_n_test\x00sqlite3_snprintf_int\x00sqlite3_last_insert_rowid\x00sqlite3_exec_printf\x00sqlite3_exec_hex\x00sqlite3_exec\x00sqlite3_exec_nr\x00sqlite3_get_table_printf\x00sqlite3_close\x00sqlite3_close_v2\x00sqlite3_create_function\x00sqlite3_create_aggregate\x00sqlite3_drop_modules\x00sqlite_register_test_function\x00sqlite_abort\x00sqlite_bind\x00breakpoint\x00sqlite3_key\x00sqlite3_rekey\x00sqlite3_interrupt\x00sqlite_delete_function\x00sqlite_delete_collation\x00sqlite3_get_autocommit\x00sqlite3_busy_timeout\x00printf\x00sqlite3IoTrace\x00clang_sanitize_address\x00sqlite3_db_config\x00sqlite3_txn_state\x00bad_behavior\x00register_dbstat_vtab\x00sqlite3_connection_pointer\x00intarray_addr\x00int64array_addr\x00doublearray_addr\x00textarray_addr\x00sqlite3_bind_int\x00sqlite3_bind_zeroblob\x00sqlite3_bind_zeroblob64\x00sqlite3_bind_int64\x00sqlite3_bind_double\x00sqlite3_bind_null\x00sqlite3_bind_text\x00sqlite3_bind_text16\x00sqlite3_bind_blob\x00sqlite3_bind_value_from_select\x00sqlite3_bind_value_from_preupdate\x00sqlite3_carray_bind\x00sqlite3_bind_parameter_count\x00sqlite3_bind_parameter_name\x00sqlite3_bind_parameter_index\x00sqlite3_clear_bindings\x00sqlite3_sleep\x00sqlite3_errcode\x00sqlite3_extended_errcode\x00sqlite3_errmsg\x00sqlite3_error_offset\x00sqlite3_errmsg16\x00sqlite3_open\x00sqlite3_open16\x00sqlite3_open_v2\x00sqlite3_complete16\x00sqlite3_normalize\x00sqlite3_prepare\x00sqlite3_prepare16\x00sqlite3_prepare_v2\x00sqlite3_prepare_v3\x00sqlite3_prepare_tkt3134\x00sqlite3_prepare16_v2\x00sqlite3_finalize\x00sqlite3_stmt_status\x00sqlite3_reset\x00sqlite3_expired\x00sqlite3_transfer_bindings\x00sqlite3_changes\x00sqlite3_step\x00sqlite3_sql\x00sqlite3_expanded_sql\x00sqlite3_next_stmt\x00sqlite3_stmt_readonly\x00sqlite3_stmt_isexplain\x00sqlite3_stmt_busy\x00uses_stmt_journal\x00sqlite3_release_memory\x00sqlite3_db_release_memory\x00sqlite3_db_cacheflush\x00sqlite3_system_errno\x00sqlite3_db_filename\x00sqlite3_db_readonly\x00sqlite3_soft_heap_limit\x00sqlite3_soft_heap_limit64\x00sqlite3_hard_heap_limit64\x00sqlite3_thread_cleanup\x00sqlite3_pager_refcounts\x00sqlite3_load_extension\x00sqlite3_enable_load_extension\x00sqlite3_extended_result_codes\x00sqlite3_limit\x00dbconfig_maindbname_icecube\x00save_prng_state\x00restore_prng_state\x00reset_prng_state\x00prng_seed\x00extra_schema_checks\x00database_never_corrupt\x00database_may_be_corrupt\x00optimization_control\x00tcl_objproc\x00sqlite3_column_count\x00sqlite3_data_count\x00sqlite3_column_type\x00sqlite3_column_blob\x00sqlite3_column_double\x00sqlite3_column_int64\x00sqlite3_column_text\x00sqlite3_column_name\x00sqlite3_column_int\x00sqlite3_column_bytes\x00sqlite3_column_decltype\x00sqlite3_column_database_name\x00sqlite3_column_table_name\x00sqlite3_column_origin_name\x00sqlite3_column_bytes16\x00sqlite3_column_text16\x00sqlite3_column_name16\x00add_alignment_test_collations\x00sqlite3_column_decltype16\x00sqlite3_column_database_name16\x00sqlite3_column_table_name16\x00sqlite3_column_origin_name16\x00sqlite3_create_collation_v2\x00sqlite3_global_recover\x00working_64bit_int\x00vfs_unlink_test\x00vfs_initfail_test\x00vfs_unregister_all\x00vfs_reregister_all\x00file_control_test\x00file_control_lasterrno_test\x00file_control_lockproxy_test\x00file_control_chunksize_test\x00file_control_sizehint_test\x00file_control_data_version\x00file_control_persist_wal\x00file_control_powersafe_overwrite\x00file_control_vfsname\x00file_control_reservebytes\x00file_control_tempfilename\x00file_control_external_reader\x00sqlite3_vfs_list\x00sqlite3_create_function_v2\x00add_test_collate\x00add_test_collate_needed\x00add_test_function\x00add_test_utf16bin_collate\x00sqlite3_test_errstr\x00tcl_variable_type\x00sqlite3_enable_shared_cache\x00sqlite3_shared_cache_report\x00sqlite3_libversion_number\x00sqlite3_table_column_metadata\x00sqlite3_blob_reopen\x00pcache_stats\x00sqlite3_unlock_notify\x00sqlite3_wal_checkpoint\x00sqlite3_wal_checkpoint_v2\x00sqlite3_wal_autocheckpoint\x00test_sqlite3_log\x00print_explain_query_plan\x00sqlite3_test_control\x00getrusage\x00load_static_extension\x00sorter_test_fakeheap\x00sorter_test_sort4_helper\x00vfs_current_time_int64\x00sqlite3_snapshot_get\x00sqlite3_snapshot_open\x00sqlite3_snapshot_free\x00sqlite3_snapshot_cmp\x00sqlite3_snapshot_recover\x00sqlite3_snapshot_get_blob\x00sqlite3_snapshot_open_blob\x00sqlite3_snapshot_cmp_blob\x00sqlite3_delete_database\x00atomic_batch_write\x00sqlite3_mmap_warm\x00sqlite3_config_sorterref\x00sqlite3_autovacuum_pages\x00decode_hexdb\x00test_write_db\x00sqlite3_register_cksumvfs\x00sqlite3_unregister_cksumvfs\x00*** OBSOLETE VARIABLE ***\x00 FILENAME N-PAGE\"\x00 ID\"\x00ref\x00page\x00err\x00hit\x00miss\x00ovfl\x00 ID PGNO\"\x00 PAGE\"\x00 PAGE DATA\"\x00 N-MEGABYTES FILE\"\x00open failed: \x00Hello, World!\x00write failed: \x00 PENDING-BYTE\"\x00fault simulator script failed: [%s]\x00 SCRIPT\"\x00 SIZE PROGRAM\"\x00sqlite_io_error_pending\x00sqlite_io_error_persist\x00sqlite_io_error_hit\x00sqlite_io_error_hardhit\x00sqlite_diskfull_pending\x00sqlite_diskfull\x00sqlite_pending_byte\x00pager_open\x00pager_close\x00pager_commit\x00pager_rollback\x00pager_stmt_begin\x00pager_stmt_commit\x00pager_stmt_rollback\x00pager_stats\x00pager_pagecount\x00page_get\x00page_lookup\x00page_unref\x00page_read\x00page_write\x00page_number\x00pager_truncate\x00fake_big_file\x00sqlite3BitvecBuiltinTest\x00sqlite3_test_control_pending_byte\x00sqlite3_test_control_fault_install\x00 FILENAME NCACHE FLAGS\"\x00read\x00write\x00 ID TABLENUM WRITEABLE\"\x00 START MULTIPLIER COUNT INCREMENT\"\x00putVarint returned %d - should be between 1 and 9\x00putVarint returned %d and getVarint returned %d\x00Wrote 0x%016llx and got back 0x%016llx\x00putVarint returned %d and GetVarint32 returned %d\x00Wrote 0x%016llx and got back 0x%016llx from GetVarint32\x00 DB-HANDLE ?N?\"\x00No such db-handle: \"\x00 BT NCACHE\"\x00?-intkey? CSR KEY VALUE\x00btree_insert\x00btree_open\x00btree_close\x00btree_begin_transaction\x00btree_pager_stats\x00btree_cursor\x00btree_close_cursor\x00btree_next\x00btree_eof\x00btree_payload_size\x00btree_first\x00btree_varint_test\x00btree_from_db\x00btree_ismemdb\x00btree_set_cache_size\x00thread ID must be an upper case letter\x00 ID FILENAME\x00thread \x00 is already running\x00failed to create the thread\x00 ID\x00no such thread\x00 ID N\x00column number out of range\x00no database is open\x00 ID SQL\x00no virtual machine available\x00 IDL\x00 ID1 ID2\x00 ID DB\x00thread_create\x00thread_wait\x00thread_halt\x00thread_argc\x00thread_argv\x00thread_colname\x00thread_result\x00thread_error\x00thread_compile\x00thread_step\x00thread_finalize\x00thread_swap\x00thread_db_get\x00thread_db_put\x00thread_stmt_get\x00 <repeat-count> <do-calls>\x00hello world\x00UTF8\x00UTF16LE\x00UTF16BE\x00UTF16\x00No such encoding: \x00 <string/blob> <from enc> <to enc>\x00binarize\x00test_value_overhead\x00test_translate\x00translate_selftest\x00out of memory in the crash simulator\n\x00atomic\x00atomic512\x00atomic1k\x00atomic2k\x00atomic4k\x00atomic8k\x00atomic16k\x00atomic32k\x00atomic64k\x00sequential\x00safe_append\x00powersafe_overwrite\x00batch-atomic\x00-sectorsize\x00-characteristics\x00Bad option: \"\x00\" - must be \"-characteristics\" or \"-sectorsize\"\x00Option requires an argument: \"\x00no such flag\x00ENABLE ?DEFAULT?\x00crash\x00?OPTIONS? DELAY CRASHFILE\x00Filename is too long: \"\x00NWRITE\x00?-default? PARENT-VFS\x00-default\x00\": must be -default\x00Error in jt_register\x00sqlite3_crash_enable\x00sqlite3_crashparams\x00sqlite3_crash_now\x00sqlite3_simulate_device\x00sqlite3_crash_on_write\x00unregister_devsim\x00register_jt_vfs\x00unregister_jt_vfs\x00client_create\x00client_wait\x00client_halt\x00client_argc\x00client_argv\x00client_colname\x00client_result\x00client_error\x00client_compile\x00client_step\x00client_reset\x00client_finalize\x00client_swap\x00echo_module_fail(%s,%s)\x00echo-vtab-error: %s\x00SELECT * FROM %Q\x00PRAGMA index_list(%s)\x00PRAGMA index_info(%s)\x00echo_module\x00SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = ?\x00%s%s\x00xCreate\x00CREATE TABLE %Q(logmsg)\x00xConnect\x00xDisconnect\x00xDestroy\x00DROP TABLE %Q\x00xOpen\x00xNext\x00xColumn\x00xFilter\x00, *\x00%z, %s\x00%z, NULL\x00echo_module_ignore_usable\x00xBestIndex\x00echo_module_cost\x00SELECT count(*) FROM %Q\x00SELECT rowid%z FROM %Q\x00=\x00<\x00>\x00<=\x00>=\x00LIKE\x00like\x00glob\x00 %s %s LIKE (SELECT '%%'||?||'%%')\x00 %s %s %s ?\x00DESC\x00ASC\x00 ORDER BY %s %s\x00xUpdate\x00 SET\x00UPDATE %Q\x00 SET rowid=?1 \x00%s %Q=?%d\x00 WHERE rowid=?%d\x00DELETE FROM %Q WHERE rowid = ?1\x00INSERT INTO %Q (\x00%s%Q\x00%s?%d\x00) VALUES(\x00echo(%s)\x00xBegin\x00echo_module_begin_fail\x00xSync\x00echo_module_sync_fail\x00xCommit\x00xRollback\x00::echo_glob_overload\x00xRename\x00ALTER TABLE %s RENAME TO %s%s\x00function_that_does_not_exist_0982ma98\x00echo\x00echo_v2\x00register_echo_module\x00sqlite3_declare_vtab\x00N/A\x00sqlite3_create_collation\x00Error testing function: \x00sqlite3_malloc\x00sqlite3_realloc\x00c_misuse_test\x00c_realloc_test\x00c_collation_test\x00sqlite3_reset_auto_extension\x00npage\x00finish\x00remaining\x00pagecount\x00CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME\x00sqlite3_backup_init() failed\x00sqlite3_backup\x00wrong number of arguments\x00unexpected: %s\x00eq\x00gt\x00le\x00lt\x00ge\x00match\x00ne\x00isnot\x00isnotnull\x00isnull\x00limit\x00offset\x00column\x00usable\x00desc\x00constraints\x00orderby\x00mask\x00distinct\x00in\x00rhs_value\x00INDEX BOOLEAN\x00INDEX ?DEFAULT?\x00bestindex%d\x00cost\x00idxnum\x00idxstr\x00rows\x00use\x00omit\x00unexpected: %d\x00tcl\x00register_tcl_module\x00incrblob_\x00DB DATABASE TABLE COLUMN ROWID FLAGS VARNAME\x00HANDLE\x00CHANNEL OFFSET N\x00out of memory in testdata/sqlite-src-3390300/src/test_blob.c\x00HANDLE OFFSET DATA ?NDATA?\x00sqlite3_blob_open\x00sqlite3_blob_close\x00sqlite3_blob_bytes\x00sqlite3_blob_read\x00sqlite3_blob_write\x00sqlite_options\x00malloc_usable_size\x001\x00rowid32\x00casesensitivelike\x00configslower\x001.0\x00curdir\x00win32malloc\x00debug\x00default_ckptfullfsync\x00direct_read\x00dirsync\x00lfs\x00pagecache_overflow_stats\x00mmap\x00worker_threads\x008\x00memdebug\x008_3_names\x00cursorhints\x00hiddencolumns\x00mathlib\x00mem3\x00mem5\x00offset_sql_func\x00snapshot\x00mutex\x00mutex_noop\x00altertable\x00api_armor\x00atomicwrite\x00geopoly\x00json1\x00has_codec\x00like_match_blobs\x00auth\x00autoinc\x00autoreset\x00autovacuum\x00default_autovacuum\x00between_opt\x00builtin_test\x00bloblit\x00cast\x00check\x00cte\x00columnmetadata\x00oversize_cell_check\x00compileoption_diags\x00compound\x00conflict\x00crashtest\x00datetime\x00decltype\x00deprecated\x00diskio\x00floatingpoint\x00foreignkey\x00fts1\x00fts2\x00fts3\x00fts5\x00fts3_unicode\x00fts4_deferred\x00gettable\x00icu\x00icu_collations\x00integrityck\x00legacyformat\x00like_opt\x00load_ext\x00localtime\x00lookaside\x00long_double\x00memorydb\x00memorymanage\x00mergesort\x00null_trim\x00or_opt\x00rbu\x00pager_pragmas\x00pragma\x00reindex\x00rtree\x00rtree_int_only\x00schema_pragmas\x00schema_version\x00session\x00stmtvtab\x00scanstatus\x00lock_proxy_pragmas\x00prefer_proxy_locking\x00shared_cache\x00subquery\x00tclvar\x00threadsafe\x00threadsafe1\x00threadsafe2\x00tempdb\x00trigger\x00truncate_opt\x00vacuum\x00view\x00vtab\x00wal\x00wsd\x00update_delete_limit\x00fast_secure_delete\x00secure_delete\x00userauth\x00multiplex_ext_overwrite\x00yytrackmaxstackdepth\x00sqllog\x00uri_00_error\x00normalize\x00windowfunc\x00SQLITE_MAX_LENGTH\x00SQLITE_MAX_COLUMN\x00SQLITE_MAX_SQL_LENGTH\x00SQLITE_MAX_EXPR_DEPTH\x00SQLITE_MAX_COMPOUND_SELECT\x00SQLITE_MAX_VDBE_OP\x00SQLITE_MAX_FUNCTION_ARG\x00SQLITE_MAX_VARIABLE_NUMBER\x00SQLITE_MAX_PAGE_SIZE\x00SQLITE_MAX_PAGE_COUNT\x00SQLITE_MAX_LIKE_PATTERN_LENGTH\x00SQLITE_MAX_TRIGGER_DEPTH\x00SQLITE_DEFAULT_CACHE_SIZE\x00SQLITE_DEFAULT_PAGE_SIZE\x00SQLITE_DEFAULT_FILE_FORMAT\x00SQLITE_DEFAULT_SYNCHRONOUS\x00SQLITE_DEFAULT_WAL_SYNCHRONOUS\x00SQLITE_MAX_ATTACHED\x00SQLITE_MAX_DEFAULT_PAGE_SIZE\x00SQLITE_MAX_WORKER_THREADS\x00TEMP_STORE\x00__GNUC__\x00%s-journal\x00%s-wal\x00%s-shm\x00%s%03d\x00%s-journal%03d\x00%s-wal%03d\x00devsym\x00writecrash\x00CREATE TABLE xyz(dir, name);\x00CREATE TABLE xyz(path, size, data);\x00WITH r(d) AS (  SELECT CASE WHEN dir=?2 THEN ?3 ELSE dir END || '/' || name     FROM fsdir WHERE dir=?1 AND name NOT LIKE '.%'  UNION ALL  SELECT dir || '/' || name FROM r, fsdir WHERE dir=d AND name NOT LIKE '.%') SELECT d FROM r;\x00/\x00CREATE TABLE x(path TEXT, data TEXT)\x00SELECT * FROM %Q.%Q WHERE rowid=?\x00fs\x00fstree\x00register_fs_module\x00abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-!,:*^+=_|?/<> \x00sqlite3_prepare_v2() error: %s\x000123456789abcdef\x00test_agg_errmsg16\x00randstr\x00test_destructor\x00test_destructor16\x00hex_to_utf16be\x00hex_to_utf16le\x00hex_to_utf8\x00test_destructor_count\x00test_auxdata\x00test_error\x00test_eval\x00test_isolation\x00test_counter\x00real2hex\x00test_decode\x00test_extract\x00test_zeroblob\x00test_getsubtype\x00test_setsubtype\x00test_frombind\x00tx\x00funcxx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00sqlite3_create_function abused test failed\x00invalid matchinfo blob passed to function rank()\x00wrong number of arguments to function rank()\x00rank\x00autoinstall_test_functions\x00abuse_create_function\x00install_fts3_rank_function\x000123456789ABCDEF\x00FILENAME OFFSET AMT\x00r\x00cannot open input file \x00FILENAME OFFSET HEXDATA\x00r+b\x00r+\x00cannot open output file \x00HEXDATA\x00[utf8_to_utf8] unavailable - SQLITE_DEBUG not defined\x00BLOB VARNAME\x00LIST\x00hexio_read\x00hexio_write\x00hexio_get_int\x00hexio_render_int16\x00hexio_render_int32\x00utf8_to_utf8\x00read_fts3varint\x00make_fts3record\x00mem\x00pcache\x00Unknown argument: \"\x00init_wrapper_install\x00init_wrapper_query\x00init_wrapper_uninstall\x00init_wrapper_clear\x00CREATE TABLE x(value INTEGER PRIMARY KEY)\x00CREATE VIRTUAL TABLE temp.%Q USING %Q\x00INTARRAY\x00SQLITE_NOMEM\x00sqlite3_intarray_create\x00sqlite3_intarray_bind\x00jt\x00-journal\x00NBYTES\x00PRIOR NBYTES\x00bad pointer: \x00PRIOR\x00ADDRESS SIZE HEX\x00size must be positive\x00no data\x00ADDRESS SIZE\x00?RESET?\x00DEPT\x00FILENAME\x00COUNTER ?OPTIONS?\x00-repeat\x00-benigncnt\x00TITLE\x00SUB-COMMAND ...\x00start\x00stop\x00dump\x00clear\x00sync\x00SIZE N\x00INSTALLFLAG DISCARDCHANCE PRNGSEEED HIGHSTRESS\x00discard-chance should be between 0 and 100\x00SIZE COUNT\x00BUFID SIZE COUNT\x00illegal arguments - see documentation\x00NBYTE NMINALLOC\x00[DB]\x00sqlite3_db_config(db, 99999) does not return SQLITE_ERROR\x00sqlite3_config(99999) does not return SQLITE_ERROR\x00PARAMETER RESETFLAG\x00SQLITE_STATUS_MEMORY_USED\x00SQLITE_STATUS_MALLOC_SIZE\x00SQLITE_STATUS_PAGECACHE_USED\x00SQLITE_STATUS_PAGECACHE_OVERFLOW\x00SQLITE_STATUS_PAGECACHE_SIZE\x00SQLITE_STATUS_SCRATCH_USED\x00SQLITE_STATUS_SCRATCH_OVERFLOW\x00SQLITE_STATUS_SCRATCH_SIZE\x00SQLITE_STATUS_PARSER_STACK\x00SQLITE_STATUS_MALLOC_COUNT\x00DB PARAMETER RESETFLAG\x00SQLITE_\x00DBSTATUS_\x00LOOKASIDE_USED\x00CACHE_USED\x00SCHEMA_USED\x00STMT_USED\x00LOOKASIDE_HIT\x00LOOKASIDE_MISS_SIZE\x00LOOKASIDE_MISS_FULL\x00CACHE_HIT\x00CACHE_MISS\x00CACHE_WRITE\x00DEFERRED_FKS\x00CACHE_USED_SHARED\x00CACHE_SPILL\x00?INTEGER?\x00sqlite3_free\x00memset\x00memget\x00sqlite3_memory_used\x00sqlite3_memory_highwater\x00sqlite3_memdebug_backtrace\x00sqlite3_memdebug_dump\x00sqlite3_memdebug_fail\x00sqlite3_memdebug_pending\x00sqlite3_memdebug_settitle\x00sqlite3_memdebug_malloc_count\x00sqlite3_memdebug_log\x00sqlite3_config_pagecache\x00sqlite3_config_alt_pcache\x00sqlite3_status\x00sqlite3_db_status\x00install_malloc_faultsim\x00sqlite3_config_heap\x00sqlite3_config_heap_size\x00sqlite3_config_memstatus\x00sqlite3_config_lookaside\x00sqlite3_config_error\x00sqlite3_config_uri\x00sqlite3_config_cis\x00sqlite3_config_pmasz\x00sqlite3_db_config_lookaside\x00sqlite3_dump_memsys3\x00sqlite3_dump_memsys5\x00sqlite3_install_memsys3\x00sqlite3_memdebug_vfs_oom_test\x00%05u\x00 FILENAME [OFFSET AMT]\"\x00unable to open file \"\x00\" for reading\x00md5\x00md5-10x8\x00md5file\x00md5file-10x8\x00md5sum\x00%03d\x00multiplexor.xAccess failure on %s\x00multiplexor.xOpen failure on %s\x00multiplex_control\x00chunksize\x00multiplex_\x00multiplex_truncate\x00multiplex_enabled\x00multiplex_chunksize\x00multiplex_filecount\x00multiplex/%z\x00multiplex\x00NAME MAKEDEFAULT\x00-force\x00?-force?\x00chunk_size\x00max_chunks\x00HANDLE DBNAME SUB-COMMAND INT-VALUE\x00expected database handle, got \"\x00sqlite3_multiplex_initialize\x00sqlite3_multiplex_shutdown\x00sqlite3_multiplex_control\x00fast\x00recursive\x00static_main\x00static_mem\x00static_open\x00static_prng\x00static_lru\x00static_pmem\x00static_app1\x00static_app2\x00static_app3\x00static_vfs1\x00static_vfs2\x00static_vfs3\x00mutex counters are \x00already installed\x00not installed\x00singlethread\x00multithread\x00serialized\x00mutex name\x00disable_mutex_init\x00disable_mutex_try\x00sqlite3_shutdown\x00sqlite3_initialize\x00sqlite3_config\x00enter_static_mutex\x00leave_static_mutex\x00enter_db_mutex\x00leave_db_mutex\x00alloc_dealloc_mutex\x00install_mutex_counters\x00read_mutex_counters\x00clear_mutex_counters\x00\x00\x00\x00\x00\x00\x00\x00vfslog/%z\x00sqlite_ostrace1.....\x00xClose\x00xRead\x00xWrite\x00xTruncate\x00xFilesize\x00xLock\x00xUnlock\x00xCheckResLock\x00xFileControl\x00xSectorSize\x00xDeviceChar\x00xDelete\x00xAccess\x00xFullPathname\x00xRandomness\x00xSleep\x00xCurrentTime\x00xShmUnmap\x00xShmLock\x00xShmBarrier\x00xShmMap\x00annotation\x00CREATE TABLE xxx(event, file, click, rc, size, offset)\x00vfslog\x00VFS\x00failed\x00VFS PARENT LOGFILE\x00bad sqlite3 handle: \x00annotate\x00finalize\x00register\x00quota/%z\x00quota\x00::piLimit_\x00PATTERN LIMIT SCRIPT\x00FILENAME MODE\x00HANDLE SIZE NELEM\x00HANDLE SIZE NELEM CONTENT\x00HANDLE ?HARDSYNC?\x00HANDLE OFFSET WHENCE\x00SEEK_SET\x00SEEK_CUR\x00SEEK_END\x00WHENCE should be SEEK_SET, SEEK_CUR, or SEEK_END\x00HANDLE SIZE\x00PATTERN TEXT\x00sqlite3_quota_initialize\x00sqlite3_quota_shutdown\x00sqlite3_quota_set\x00sqlite3_quota_file\x00sqlite3_quota_dump\x00sqlite3_quota_fopen\x00sqlite3_quota_fread\x00sqlite3_quota_fwrite\x00sqlite3_quota_fclose\x00sqlite3_quota_fflush\x00sqlite3_quota_fseek\x00sqlite3_quota_rewind\x00sqlite3_quota_ftell\x00sqlite3_quota_ftruncate\x00sqlite3_quota_file_size\x00sqlite3_quota_file_truesize\x00sqlite3_quota_file_mtime\x00sqlite3_quota_remove\x00sqlite3_quota_glob\x00sqlite3_quota_file_available\x00sqlite3_quota_ferror\x00cube\x00circle\x00Qcircle\x00breadthfirstsearch\x00register_cube_geom\x00register_circle_geom\x00CREATE TABLE x(database,tablename,cid,name,type,not_null,dflt_value,pk)\x00SELECT name FROM sqlite_temp_schema WHERE type='table'\x00SELECT name FROM %Q.sqlite_schema WHERE type='table'\x00PRAGMA %Q.table_info(%Q)\x00PRAGMA database_list\x00register_schema_module\x00PRAGMA main.journal_mode\x00CMDNAME PATH ?VFS? ?BUSY-HANDLER-SCRIPT?\x00sqlite3demo_superlock\x00open\x00access\x00getcwd\x00stat\x00fstat\x00ftruncate\x00fcntl\x00pread\x00pread64\x00pwrite\x00pwrite64\x00fchmod\x00fallocate\x00mremap\x00SYSCALL-LIST\x00system-call\x00?COUNT PERSIST?\x00EACCES\x00EINTR\x00EIO\x00EOVERFLOW\x00ENOMEM\x00EAGAIN\x00ETIMEDOUT\x00EBUSY\x00EPERM\x00EDEADLK\x00ENOLCK\x00SYSCALL ERRNO\x00errno\x00PGSZ\x00getpagesize\x00pgsz out of range\x00fault\x00install\x00uninstall\x00list\x00defaultvfs\x00pagesize\x00VFS does not support xSetSystemCall\x00test_syscall\x00load_testfixture_extensions\x00SLAVE\x00CREATE TABLE x(  name TEXT,  arrayname TEXT,  value TEXT,  fullname TEXT PRIMARY KEY) WITHOUT ROWID\x00array names\x00tclvar_filter_cmd\x00%s(%s)\x00expr {[info exists ::tclvar_set_omit] && $::tclvar_set_omit}\x00the 'fullname' column must be TEXT\x00prohibited TCL variable change\x00proc like {pattern str} {\n  set p [string map {% * _ ?} $pattern]\n  string match $p $str\n}\nproc tclvar_filter_cmd {eq match glob regexp like} {\n  set res {}\n  set pattern $eq\n  if {$pattern=={}} { set pattern $match }\n  if {$pattern=={}} { set pattern * }\n  foreach v [uplevel #0 info vars $pattern] {\n    if {($glob=={} || [string match $glob [uplevel #0 set $v]])\n     && ($like=={} || [like $like [uplevel #0 set $v]])\n     && ($regexp=={} || [regexp $regexp [uplevel #0 set $v]])\n    } {\n      lappend res $v\n    }\n  }\n  set res\n}\n\x00register_tclvar_module\x00clock_seconds\x00sqlthread\x00sqlite3_blocking_step\x00sqlite3_blocking_prepare_v2\x00sqlite3_nonblocking_prepare_v2\x00set\x00Error in Tcl_CreateThread()\x00no parent thread\x00parent\x00spawn\x00VARNAME SCRIPT\x00DBNAME\x00id\x00%s \x00SQLITE_IOERR\x00SQLITE_LOCKED\x00SQLITE_BUSY\x00SQLITE_READONLY\x00SQLITE_READONLY_CANTINIT\x00SQLITE_NOTFOUND\x00SQLITE_OMIT\x00normal|dataonly\x00full|dataonly\x00xCheckReservedLock\x00BEGIN_ATOMIC_WRITE\x00COMMIT_ATOMIC_WRITE\x00ZIPVFS\x00anon\x00SQLITE_ACCESS_EXISTS\x00SQLITE_ACCESS_READWRITE\x00SQLITE_ACCESS_READ\x00xShmOpen\x00 lock\x00 unlock\x00 shared\x00 exclusive\x00shm\x00filter\x00ioerr\x00fullerr\x00cantopenerr\x00script\x00devchar\x00sectorsize\x00subcommand\x00FILE ?VALUE?\x00failed to get full path: \x00no such file: \x00unknown method: \x00?CNT PERSIST?\x00default\x00undeletable_when_open\x00immutable\x00?ATTR-LIST?\x00bad flags: \x00?VALUE?\x00-noshm\x00-szosfile\x00-mxpathname\x00-iversion\x00-fullshm\x00VFSNAME ?-noshm BOOL? ?-fullshm BOOL? ?-default BOOL? ?-mxpathname INT? ?-szosfile INT? ?-iversion INT?\x00shared\x00lock\x00unlock\x00DB DBNAME (shared|exclusive) (lock|unlock) OFFSET N\x00ARG\x00DB DBNAME SLOT ?VALUE?\x00*-shm is not yet mapped\x00testvfs\x00vfs_shmlock\x00vfs_set_readmark\x00DB NAME XSTEP XFINAL XVALUE XINVERSE\x00fff\x00misuse test error\x00invalid argument\x00sumint\x00sum\x00sqlite3_create_window_function\x00test_create_window_function_misuse\x00test_create_sumint\x00test_override_sum\x00"
 61903  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data